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.