upm
1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
|
API for the H3LIS331DL-based Grove 3-Axis Digital Accelerometer (400g) More...
This is a high-performance, high-range accelerometer for extreme applications.
Public Types | |
enum | H3LIS331DL_REG_T { REG_WHOAMI = 0x0f, REG_REG1 = 0x20, REG_REG2 = 0x21, REG_REG3 = 0x22, REG_REG4 = 0x23, REG_REG5 = 0x24, REG_HP_FILTER_RESET = 0x25, REG_REFERENCE = 0x26, REG_STATUS = 0x27, REG_OUT_X_L = 0x28, REG_OUT_X_H = 0x29, REG_OUT_Y_L = 0x2a, REG_OUT_Y_H = 0x2b, REG_OUT_Z_L = 0x2c, REG_OUT_Z_H = 0x2d, REG_INT1_CFG = 0x30, REG_INT1_SRC = 0x31, REG_INT1_THS = 0x32, REG_INT1_DUR = 0x33, REG_INT2_CFG = 0x34, REG_INT2_SRC = 0x35, REG_INT2_THS = 0x36, REG_INT2_DUR = 0x37 } |
enum | REG1_BITS_T { REG1_XEN = 0x01, REG1_YEN = 0x02, REG1_ZEN = 0x04, REG1_DR0 = 0x08, REG1_DR1 = 0x10, REG1_DR_SHIFT = 3, REG1_PM0 = 0x20, REG1_PM1 = 0x40, REG1_PM2 = 0x80, REG1_PM_SHIFT = 5 } |
enum | DR_BITS_T { DR_50_37 = 0x0, DR_100_74 = 0x1, DR_400_292 = 0x2, DR_1000_780 = 0x3 } |
enum | PM_BITS_T { PM_POWERDWN = 0x0, PM_NORMAL = 0x1, PM_LP05 = 0x2, PM_LP1 = 0x3, PM_LP2 = 0x4, PM_LP5 = 0x5, PM_LP10 = 0x6 } |
enum | REG2_BITS_T { REG2_HPCF0 = 0x01, REG2_HPCF1 = 0x02, REG2_HPCF_SHIFT = 0, REG2_HPEN1 = 0x04, REG2_HPEN2 = 0x08, REG2_FDS = 0x10, REG2_HPM0 = 0x20, REG2_HPM1 = 0x40, REG2_HPM_SHIFT = 5, REG2_BOOT = 0x80 } |
enum | HPCF_BITS_T { HPCF_8 = 0x0, HPCF_16 = 0x1, HPCF_32 = 0x2, HPCF_64 = 0x3 } |
enum | HPM_BITS_T { HPM_NORMAL0 = 0x0, HPM_REF = 0x1, HPM_NORMAL1 = 0x2 } |
enum | REG3_BITS_T { REG3_I1_CFG0 = 0x01, REG3_I1_CFG1 = 0x02, REG3_I1_CFG_SHIFT = 0, REG3_LIR1 = 0x04, REG3_I2_CFG0 = 0x08, REG3_I2_CFG1 = 0x10, REG3_I2_CFG_SHIFT = 3, REG3_LIR2 = 0x20, REG3_PP_OD = 0x40, REG3_IHL = 0x80 } |
enum | I_CFG_BITS_T { I_SRC = 0x0, I_OR = 0x1, I_DR = 0x2, I_BOOTING = 0x3 } |
enum | REG4_BITS_T { REG4_SIM = 0x01, REG4_FS0 = 0x10, REG4_FS1 = 0x20, REG4_FS_SHIFT = 4, REG4_BLE = 0x40, REG4_BDU = 0x80 } |
enum | FS_BITS_T { FS_100 = 0x0, FS_200 = 0x1, FS_400 = 0x3 } |
enum | REG5_BITS_T { REG5_TURNON0 = 0x01, REG5_TURNON1 = 0x02 } |
enum | STATUS_BITS_T { STATUS_XDA = 0x01, STATUS_YDA = 0x02, STATUS_ZDA = 0x04, STATUS_ZYXDA = 0x08, STATUS_XOR = 0x10, STATUS_YOR = 0x20, STATUS_ZOR = 0x40, STATUS_ZYXOR = 0x80 } |
enum | INT_CFG_BITS_T { INT_CFG_XLIE = 0x01, INT_CFG_XHIE = 0x02, INT_CFG_YLIE = 0x04, INT_CFG_YHIE = 0x08, INT_CFG_ZLIE = 0x10, INT_CFG_ZHIE = 0x20, INT_CFG_AOI = 0x80 } |
enum | INT_SRC_BITS_T { INT_SRC_XL = 0x01, INT_SRC_XH = 0x02, INT_SRC_YL = 0x04, INT_SRC_YH = 0x08, INT_SRC_ZL = 0x10, INT_SRC_ZH = 0x20, INT_SRC_IA = 0x40 } |
Public Member Functions | |
H3LIS331DL (int bus, uint8_t address=H3LIS331DL_DEFAULT_I2C_ADDR) | |
~H3LIS331DL () | |
bool | init (DR_BITS_T odr=DR_50_37, PM_BITS_T pm=PM_NORMAL, FS_BITS_T fs=FS_100) |
uint8_t | getChipID () |
bool | setDataRate (DR_BITS_T odr) |
bool | setPowerMode (PM_BITS_T pm) |
bool | enableAxis (uint8_t axisEnable) |
bool | setFullScale (FS_BITS_T fs) |
bool | setHPCF (HPCF_BITS_T val) |
bool | setHPM (HPM_BITS_T val) |
bool | boot () |
bool | enableHPF1 (bool enable) |
bool | enableHPF2 (bool enable) |
bool | enableFDS (bool enable) |
bool | setInterruptActiveLow (bool enable) |
bool | setInterruptOpenDrain (bool enable) |
bool | setInterrupt1Latch (bool enable) |
bool | setInterrupt2Latch (bool enable) |
bool | setInterrupt1PadConfig (I_CFG_BITS_T val) |
bool | setInterrupt2PadConfig (I_CFG_BITS_T val) |
bool | enableBDU (bool enable) |
bool | enableBLE (bool enable) |
bool | enableSleepToWake (bool enable) |
uint8_t | getStatus () |
bool | setInterrupt1Config (uint8_t val) |
bool | setInterrupt2Config (uint8_t val) |
bool | setInterrupt1Source (uint8_t val) |
bool | setInterrupt2Source (uint8_t val) |
bool | setInterrupt1Threshold (uint8_t val) |
bool | setInterrupt2Threshold (uint8_t val) |
bool | setInterrupt1Duration (uint8_t val) |
bool | setInterrupt2Duration (uint8_t val) |
void | update () |
void | setAdjustmentOffsets (int adjX, int adjY, int adjZ) |
void | getAcceleration (float *aX, float *aY, float *aZ) |
void | getRawXYZ (int *x, int *y, int *z) |
void | getXYZ (int *x, int *y, int *z) |
std::vector< float > | getAcceleration () |
std::vector< int > | getRawXYZ () |
std::vector< int > | getXYZ () |
mraa::I2c & | i2cContext () |
Protected Attributes | |
int16_t | m_rawX |
int16_t | m_rawY |
int16_t | m_rawZ |
int16_t | m_adjX |
int16_t | m_adjY |
int16_t | m_adjZ |
mraa::I2c | m_i2c |
enum H3LIS331DL_REG_T |
H3LIS331DL registers
enum REG1_BITS_T |
REG1 bits
enum DR_BITS_T |
REG1 DR (output rate) bits
enum PM_BITS_T |
REG1 PM (power mode) bits
enum REG2_BITS_T |
REG2 bits
enum HPCF_BITS_T |
REG2 HPCF (high-pass cutoff frequency) bits
enum HPM_BITS_T |
REG2 HPM (high-pass filter mode) bits
enum REG3_BITS_T |
REG3 bits
enum I_CFG_BITS_T |
REG3 I1/I2 PAD control bits
enum REG4_BITS_T |
REG4 bits
enum FS_BITS_T |
REG4 FS (full scale) bits
enum REG5_BITS_T |
REG5 TURNON (sleep to wake) bits
enum STATUS_BITS_T |
STATUS bits
enum INT_CFG_BITS_T |
INT1/INT2 CFG bits
enum INT_SRC_BITS_T |
INT1/INT2 SRC bits
H3LIS331DL | ( | int | bus, |
uint8_t | address = H3LIS331DL_DEFAULT_I2C_ADDR |
||
) |
H3LIS331DL constructor
bus | I2C bus to use |
address | Address for this device |
~H3LIS331DL | ( | ) |
H3LIS331DL destructor
Sets up initial values and starts operation
odr | Data rate: one of the DR_BITS_T values |
pm | Power mode: one of the PM_BITS_T values |
fs | FullScale: one of the FS_BITS_T values |
uint8_t getChipID | ( | ) |
Reads and returns the chip ID (WHO_AM_I register)
bool setDataRate | ( | DR_BITS_T | odr | ) |
Sets the output data rate
odr | One of the DR_BITS_T values |
bool setPowerMode | ( | PM_BITS_T | pm | ) |
Sets the power mode
pm | One of the PM_BITS_T values |
bool enableAxis | ( | uint8_t | axisEnable | ) |
Enables one or more of the 3 axes. The argument is a bitmask composed of REG1_XEN, REG1_YEN, and/or REG1_ZEN corresponding to the axes you want enabled.
axisEnable | Bitmask of axes to enable (REG1_XEN | REG1_YEN | REG1_ZEN) |
bool setFullScale | ( | FS_BITS_T | fs | ) |
Sets the scaling factor to 100g, 200g, or 400g
fs | One of the FS_BITS_T values |
bool setHPCF | ( | HPCF_BITS_T | val | ) |
Sets a high-pass cutoff filter
val | One of the HPCF_BITS_T values |
bool setHPM | ( | HPM_BITS_T | val | ) |
Sets a high-pass filter mode
val | One of the HPM_BITS_T values |
bool boot | ( | ) |
Boots the device. Booting the device causes internal flash calibration values to be reloaded into the visible registers in case they have been corrupted. This function returns when the booting is complete.
bool enableHPF1 | ( | bool | enable | ) |
Enables a high-pass filter for interrupt 1 source
enable | True to enable the filter, false otherwise |
bool enableHPF2 | ( | bool | enable | ) |
Enables a high-pass filter for interrupt 2 source
enable | True to enable the filter, false otherwise |
bool enableFDS | ( | bool | enable | ) |
Enables filtered data selection
enable | True to enable, false otherwise |
bool setInterruptActiveLow | ( | bool | enable | ) |
Sets interrupts to be active low instead of high
enable | True to enable, false otherwise |
bool setInterruptOpenDrain | ( | bool | enable | ) |
Sets an interrupt output mode to open drain rather than push/pull
enable | True to enable, false otherwise |
bool setInterrupt1Latch | ( | bool | enable | ) |
Enables interrupt 1 latch
enable | True to enable, false otherwise |
bool setInterrupt2Latch | ( | bool | enable | ) |
Enables interrupt 2 latch
enable | True to enable, false otherwise |
bool setInterrupt1PadConfig | ( | I_CFG_BITS_T | val | ) |
Sets the interrupt 1 pad configuration
val | One fo the I_CFG_BITS_T values |
bool setInterrupt2PadConfig | ( | I_CFG_BITS_T | val | ) |
Sets the interrupt 2 pad configuration
val | One fo the I_CFG_BITS_T values |
bool enableBDU | ( | bool | enable | ) |
Enables block data update. When enabled, low/high output registers are not updated until both low and high values have been read.
enable | True to enable, false otherwise |
bool enableBLE | ( | bool | enable | ) |
Enables big-endian output for 16b reads
enable | True to enable, false otherwise |
bool enableSleepToWake | ( | bool | enable | ) |
Enables sleep-to-wake functionality
enable | True to enable, false otherwise |
uint8_t getStatus | ( | ) |
Returns the contents of the REG_STATUS register
bool setInterrupt1Config | ( | uint8_t | val | ) |
Sets up the interrupt 1 config register
val | Bitmask of desired INT_CFG_BITS_T bits |
bool setInterrupt2Config | ( | uint8_t | val | ) |
Sets up the interrupt 2 config register
val | Bitmask of desired INT_CFG_BITS_T bits |
bool setInterrupt1Source | ( | uint8_t | val | ) |
Sets up the interrupt 1 source register
val | Bitmask of desired INT_SRC_BITS_T bits |
bool setInterrupt2Source | ( | uint8_t | val | ) |
Sets up the interrupt 2 source register
val | Bitmask of desired INT_SRC_BITS_T bits |
bool setInterrupt1Threshold | ( | uint8_t | val | ) |
Sets up the interrupt 1 threshold register
val | Threshold to set |
bool setInterrupt2Threshold | ( | uint8_t | val | ) |
Sets up the interrupt 2 threshold register
val | Threshold to set |
bool setInterrupt1Duration | ( | uint8_t | val | ) |
Sets up the interrupt 1 duration register
val | Duration to set |
bool setInterrupt2Duration | ( | uint8_t | val | ) |
Sets up the interrupt 2 duration register
val | Duration to set |
void update | ( | void | ) |
Reads the sensor and stores current values internally
void setAdjustmentOffsets | ( | int | adjX, |
int | adjY, | ||
int | adjZ | ||
) |
Sets adjustment offsets for each of the axes. This can be used for calibration. The values supplied here are subtracted from the axis data read from the device.
adjX | Amount by which to correct the X-axis measurement |
adjY | Amount by which to correct the Y-axis measurement |
adjZ | Amount by which to correct the Z-axis measurement |
void getAcceleration | ( | float * | aX, |
float * | aY, | ||
float * | aZ | ||
) |
Gets acceleration values for each of the axes
aX | Returned X-axis acceleration |
aY | Returned Y-axis acceleration |
aZ | Returned Z-axis acceleration |
void getRawXYZ | ( | int * | x, |
int * | y, | ||
int * | z | ||
) |
Gets raw axis values
x | Returned raw X-axis value |
y | Returned raw Y-axis value |
z | Returned raw Z-axis value |
void getXYZ | ( | int * | x, |
int * | y, | ||
int * | z | ||
) |
Gets adjusted axis values
x | Returned X-axis value |
y | Returned Y-axis value |
z | Returned Z-axis value |
std::vector< float > getAcceleration | ( | ) |
Gets acceleration values for each of the axes
std::vector< int > getRawXYZ | ( | ) |
Gets raw axis values
std::vector< int > getXYZ | ( | ) |
Gets adjusted axis values
|
inline |
Provides public access to the MRAA I2C context of the class for direct user access