upm
0.3.2
Sensor/Actuator repository for libmraa (v0.7.2)
|
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) |
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 |
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
One | of the DR_BITS_T values |
bool setPowerMode | ( | PM_BITS_T | pm | ) |
Sets the power mode
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 | Threshhold to set |
bool setInterrupt2Threshold | ( | uint8_t | val | ) |
Sets up the interrupt 2 threshold register
val | Threshhold 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 |
|
inline |
Provides public access to the MRAA I2C context of the class for direct user access