H3LIS331DL Accelerometer Breakout Hookup Guide
Library Overview
Here's a list of the functions supported by the Arduino library for the LIS331 family.
begin(comm_mode mode)
- Sets the communications mode to be used by the library (LIS331::USE_I2C
or LIS331::USE_SPI
), sets the power mode to normal, enables the axes, sets the sampling rate to 50Hz, and resets all the other registers to 0.
setI2CAddr(address)
- Sets the I2C address. By default this is
going to be 0x19. If the SA0 jumper is soldered closed, it is 0x18. This
function must be called before begin()
so the library knows what address to
use for communications.
setSPICSPin(pin)
- Sets the SPI mode chip select pin. This function must be
called before begin()
so the library knows which pin to use for
communications.
axesEnable(bool enable)
- Pass true
to enable the axes or false
to disable
them.
setPowerMode(power_mode pmode)
- Sets the power mode of the chip. This
affects the data rate as well. Options are:
LIS331::POWER_DOWN
- Minimizes chip power usage but no data or communications are possibleLIS331::NORMAL
- Normal power mode. Data rate is set by thesetODR()
function.LIS331::LOW_POWER_0_5HZ
- Low power mode, 0.5Hz data rate.LIS331::LOW_POWER_1HZ
- Low power mode, 1Hz data rate.LIS331::LOW_POWER_2HZ
- Low power mode, 2Hz data rate.LIS331::LOW_POWER_5HZ
- Low power mode, 5Hz data rate.LIS331::LOW_POWER_10HZ
- Low power mode, 10Hz data rate.
setODR(data_rate drate)
- Sets the data rate for the part, when in normal
power mode only. Options are:
LIS331::DR_50HZ
- Set the data rate to 50Hz.LIS331::DR_100HZ
- Set the data rate to 100Hz.LIS331::DR_400HZ
- Set the data rate to 400Hz.LIS331::DR_1000HZ
- Set the data rate to 1000Hz.
readAxes(int16_t &x, int16_t &y, int16_t &z)
- Pass three int16_t
variables
to this function and those variables will be populated with the appropriate
value from the accelerometer.
convertToG(maxScale, reading)
- Converts from raw data to an actual
g-reading. The first parameter is the maximum reading for the current mode, as
set by the setFullScale()
function. Options are 6/12/24g for the LIS331HH and
100/200/400g for the H3LIS331DL.
setHighPassCoeff(high_pass_cutoff_freq_cfg hpcoeff)
- Set the coefficient for
the high pass filter. The actual cutoff frequency is dependent upon the data
rate set by setODR()
. The cutoff frequency is (fs)/(6*Hpc), where fs is the
sampling frequency and Hpc is the high pass coefficient as set by these
constants:
LIS331::HPC_8
- Sets coefficient to 8.LIS331::HPC_16
- Sets coefficient to 16.LIS331::HPC_32
- Sets coefficient to 32.LIS331::HPC_64
- Sets coefficient to 64.
enableHPF(bool enable)
- true
to enable, false
to disable.
HPFOOnIntPin(bool enable, intSource)
- Does the high pass filter apply to the
signal the interrupt is based on? true
to enable, false
to disable, and the
second parameter is 1 or 2 depending on which interrupt you wish to apply this
setting to.
intActiveHigh(bool enable)
- Pass true
to set the interrupt pin to active
high, false
to set it as active low. Default value is active high.
intPinMode(pp_od _pinMode)
- Are the interrupt pins open-drain or push pull?
Pass LIS331::PUSH_PULL
or LIS331::OPEN_DRAIN
.
intSrcConfig(int_sig_src src, pin)
- What sort of thing triggers an
interrupt, and which pin shows the interrupt. The options are:
LIS331::INT_SRC
- Interrupt source is the same as the pin number.LIS331::INT1_2_SRC
- Either interrupt will be reflected on the pin.LIS331::DRDY
- The "new data ready" signal will be reflected on the pin.LIS331::BOOT
- The boot mode status of the part is reflected on the pin.
setFullScale(fs_range range)
- Sets the range of the part, as listed below:
LOW_RANGE
- +/-6g for the LIS331HH or +/-100g for the H3LIS331DH.MED_RANGE
- +/-12g for the LIS331HH or +/-200g for the H3LIS331DH.HIGH_RANGE
- +/-24g for the LIS331HH or +/-400g for the H3LIS331DH.
bool newXData()
- returns true
if new X data is available since last read
of X data register.
bool newYData()
- same as newXData()
for Y axis.
bool newZData()
- same as newZData()
for Z axis.
enableInterrupt(int_axis axis, trig_on_level trigLevel, interrupt, bool
enable)
- axis
can be LIS331::X_AXIS
, LIS331::Y_AXIS
, or
LIS331::Z_AXIS
. trigLevel
can be LIS331::TRIG_ON_HIGH
or
LIS331::TRIG_ON_LOW
, interrupt
can be 1 or 2, and enable
is true
to
enable the interrupt and false
to disable it.
setIntDuration(duration, intSource)
- duration
can be any value from 0-127,
and represents the time in number of samples that the sensor must read above or
below the threshold set by the user. intSource
is 1 or 2.
setIntThreshold(threshold, intSource)
- threshold
is the absolute magnitude
above or below which an interrupt will occur, divided by 16. It can range from
0-127. intSource
is 1 or 2.