upm
1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
|
API for the LIS3DH 3-axis Accelerometer. More...
The LIS3DH is an ultra-low-power high performance three-axis linear accelerometer belonging to the "nano" family which leverages on the robust and mature manufacturing processes already used for the production of micromachined accelerometers.
The LIS3DH has user-selectable full scales of 2g/4g/8g/16g and is capable of measuring accelerations with output data rates from 1 Hz to 5300 Hz.
Not all functionality of this chip has been implemented in this driver, however all the pieces are present to add any desired functionality. This driver supports both I2C (default) and SPI operation.
Public Member Functions | |
LIS3DH (int bus=LIS3DH_DEFAULT_I2C_BUS, int addr=LIS3DH_DEFAULT_I2C_ADDR, int cs=-1) | |
virtual | ~LIS3DH () |
void | init (LIS3DH_ODR_T odr=LIS3DH_ODR_100HZ, LIS3DH_FS_T fs=LIS3DH_FS_2G, bool high_res=true) |
void | enableAxes (bool x_axis_enable, bool y_axis_enable, bool z_axis_enable) |
void | enableBDUMode (bool bdu_enable) |
void | enableLPMode (bool lp_enable) |
void | enableHRMode (bool hr_enable) |
void | enableNormalMode () |
void | enableHPFiltering (bool filter) |
void | enableInterruptLatching (bool int1_latch, bool int2_latch) |
void | enableADC (bool adc_enable) |
void | enableTemperature (bool temperature_enable) |
void | setODR (LIS3DH_ODR_T odr) |
void | setFullScale (LIS3DH_FS_T fs) |
void | setInterruptActiveHigh (bool high) |
void | setInt1Config (uint8_t cfg) |
void | setInt2Config (uint8_t cfg) |
uint8_t | readReg (uint8_t reg) |
int | readRegs (uint8_t reg, uint8_t *buffer, int len) |
void | writeReg (uint8_t reg, uint8_t val) |
void | update () |
uint8_t | getChipID () |
void | getAccelerometer (float *x, float *y, float *z) |
std::vector< float > | getAccelerometer () |
float | getTemperature (bool fahrenheit=false) |
uint8_t | getStatus () |
uint8_t | getStatusAux () |
void | installISR (LIS3DH_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void(*isr)(void *), void *arg) |
void | uninstallISR (LIS3DH_INTERRUPT_PINS_T intr) |
Protected Attributes | |
lis3dh_context | m_lis3dh |
LIS3DH | ( | int | bus = LIS3DH_DEFAULT_I2C_BUS , |
int | addr = LIS3DH_DEFAULT_I2C_ADDR , |
||
int | cs = -1 |
||
) |
LIS3DH constructor.
This device can support both I2C and SPI. For SPI, set the addr to -1, and specify a positive integer representing the Chip Select (CS) pin for the cs argument. If you are using a hardware CS pin (like edison with arduino breakout), then you can connect the proper pin to the hardware CS pin on your MCU and supply -1 for cs. The default operating mode is I2C.
bus | I2C or SPI bus to use |
addr | The address for this device. -1 for SPI |
cs | The gpio pin to use for the SPI Chip Select. -1 for I2C or for SPI with a hardware controlled pin. |
std::runtime_error | on initialization failure |
void init | ( | LIS3DH_ODR_T | odr = LIS3DH_ODR_100HZ , |
LIS3DH_FS_T | fs = LIS3DH_FS_2G , |
||
bool | high_res = true |
||
) |
Initialize the device and start operation. This function is called from the constructor so will not typically need to be called by a user unless the device is reset.
odr | One of the LIS3DH_ODR_T values. The default is LIS3DH_ODR_100HZ |
fs | One of the LIS3DH_FS_T values. The default is LIS3DH_FS_2G |
high_res | true to enable high resolution mode, false to disable. The default is true. |
std::runtime_error | on failure |
void enableAxes | ( | bool | x_axis_enable, |
bool | y_axis_enable, | ||
bool | z_axis_enable | ||
) |
Enable or disable specific axes. init() enables all three by default.
x_axis_enable | true to enable X axis, false to disable |
y_axis_enable | true to enable Y axis, false to disable |
z_axis_enable | true to enable Z axis, false to disable |
std::runtime_error | on failure |
void enableBDUMode | ( | bool | bdu_enable | ) |
Enable or disable Block Data Update (BDU) mode.
bdu_enable | true to enable BDU mode, false to disable |
std::runtime_error | on failure |
void enableLPMode | ( | bool | lp_enable | ) |
Enable or disable Low Power (LP) mode. Checks if mutually exclusive High Resolution (HR) mode is enabled and bails out if yes.
lp_enable | true to enable LP mode, false to disable |
std::runtime_error | on failure |
void enableHRMode | ( | bool | hr_enable | ) |
Enable or disable High Resolution (HR) mode. Checks if mutually exclusive Low Power (LP) mode is enabled and bails out if yes.
hr_enable | true to enable HR mode, false to disable |
std::runtime_error | on failure |
void enableNormalMode | ( | ) |
Enable Normal mode by explicitly disabling LP and HR ones. Note that there's no "disable" part as it's generally unknown, which mode we were in previously. To get out of Normal mode, just enable HR or LP one.
std::runtime_error | on failure |
void enableHPFiltering | ( | bool | filter | ) |
Enable high pass filtering of the accelerometer axis data. init() disables this by default. See the datasheet for details.
filter | true to enable filtering, false to disable |
std::runtime_error | on failure |
void enableInterruptLatching | ( | bool | int1_latch, |
bool | int2_latch | ||
) |
Enable or disable interrupt latching for INT1 and INT2. See the datasheet for details.
int1_latch | true to enable latching for INT1, false to disable |
int2_latch | true to enable latching for INT2, false to disable |
std::runtime_error | on failure |
void enableADC | ( | bool | adc_enable | ) |
Enable or disable built-in Analog-to-Digital Converter (ADC).
adc_enable | true to enable ADC, false to disable |
std::runtime_error | on failure |
void enableTemperature | ( | bool | temperature_enable | ) |
Enable or disable built-in temperature sensor. It depends on ADC being enabled, so we enable it unconditionally. See datasheet for details.
temperature_enable | true to enable temp sensor, false to disable |
std::runtime_error | on failure |
void setODR | ( | LIS3DH_ODR_T | odr | ) |
Set the output data rate (ODR) of the device
odr | One of the LIS3DH_ODR_T values |
std::runtime_error | on failure |
void setFullScale | ( | LIS3DH_FS_T | fs | ) |
Set the full scale (FS) of the device. This device supports a full scale of 2, 4, 8 and 16G.
fs | One of the LIS3DH_FS_T values |
std::runtime_error | on failure |
void setInterruptActiveHigh | ( | bool | high | ) |
Indicate whether INT1 and INT2 interrupts should be active high (default) or active low. See the datasheet for details.
high | true for active high, false for active low |
std::runtime_error | on failure |
void setInt1Config | ( | uint8_t | cfg | ) |
Set interrupt 1 configuration. See the datasheet for details.
cfg | A bitmask of values from LIS3DH_CTRL_REG3_BITS_T |
std::runtime_error | on failure |
void setInt2Config | ( | uint8_t | cfg | ) |
Set interrupt 2 configuration. See the datasheet for details.
cfg | A bitmask of values from LIS3DH_CTRL_REG6_BITS_T |
std::runtime_error | on failure |
uint8_t readReg | ( | uint8_t | reg | ) |
Read a register
reg | The register to read |
int readRegs | ( | uint8_t | reg, |
uint8_t * | buffer, | ||
int | len | ||
) |
Read contiguous registers into a buffer
reg | The register to start the read from |
buffer | The buffer to store the results |
len | The number of registers to read |
std::runtime_error | on failure |
void writeReg | ( | uint8_t | reg, |
uint8_t | val | ||
) |
Write to a register
reg | The register to write to |
val | The value to write |
std::runtime_error | on failure |
void update | ( | void | ) |
Update the internal stored values from sensor data
std::runtime_error | on failure |
uint8_t getChipID | ( | ) |
Return the chip ID
void getAccelerometer | ( | float * | x, |
float * | y, | ||
float * | z | ||
) |
Return accelerometer data in gravities. update() must have been called prior to calling this method.
x | Pointer to a floating point value that will have the current x component placed into it |
y | Pointer to a floating point value that will have the current y component placed into it |
z | Pointer to a floating point value that will have the current z component placed into it |
std::vector< float > getAccelerometer | ( | ) |
Return accelerometer data in gravities in the form of a floating point vector. update() must have been called prior to calling this method.
float getTemperature | ( | bool | fahrenheit = false | ) |
Return the current measured temperature. Note, this is not ambient temperature. update() must have been called prior to calling this method.
fahrenheit | true to return data in Fahrenheit, false for Celicus. Celsius is the default. |
uint8_t getStatus | ( | ) |
Return the contents of the status register
uint8_t getStatusAux | ( | ) |
Return the contents of the status aux register
void installISR | ( | LIS3DH_INTERRUPT_PINS_T | intr, |
int | gpio, | ||
mraa::Edge | level, | ||
void(*)(void *) | isr, | ||
void * | arg | ||
) |
Install an interrupt handler
intr | One of the LIS3DH_INTERRUPT_PINS_T values specifying which interrupt pin you are installing |
gpio | GPIO pin to use as interrupt pin |
level | The interrupt trigger level (one of mraa::Edge values). Make sure that you have configured the interrupt pin properly for whatever level you choose. |
isr | The interrupt handler, accepting a void * argument |
arg | The argument to pass the the interrupt handler |
std::runtime_error | on failure |
void uninstallISR | ( | LIS3DH_INTERRUPT_PINS_T | intr | ) |
Uninstall a previously installed interrupt handler
intr | One of the LIS3DH_INTERRUPT_PINS_T values, specifying which interrupt pin you are removing |