H3LIS331DL Accelerometer Breakout Hookup Guide

Pages
Contributors: SFUptownMaker
Favorited Favorite 4

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 possible
  • LIS331::NORMAL - Normal power mode. Data rate is set by the setODR() 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.