Driver for the LSM303D 3-axis accelerometer and 3-axis magnetometer with integrated temperature sensor. More...
![]() |
Data Structures | |
struct | driver_lsm303_vec3_t |
3-axis vector data structure More... | |
struct | driver_lsm303_t |
LSM303D driver instance. More... | |
Enumerations | |
enum | driver_lsm303_accel_scale_t { DRIVER_LSM303_ACCEL_SCALE_2G = 0, DRIVER_LSM303_ACCEL_SCALE_4G, DRIVER_LSM303_ACCEL_SCALE_6G, DRIVER_LSM303_ACCEL_SCALE_8G, DRIVER_LSM303_ACCEL_SCALE_16G } |
Accelerometer full scale range. More... | |
enum | driver_lsm303_mag_scale_t { DRIVER_LSM303_MAG_SCALE_2GAUSS = 0, DRIVER_LSM303_MAG_SCALE_4GAUSS, DRIVER_LSM303_MAG_SCALE_8GAUSS, DRIVER_LSM303_MAG_SCALE_12GAUSS } |
Magnetometer full scale range. More... | |
Functions | |
bool | driver_lsm303_init (driver_lsm303_t *driver, hw_i2c_t *i2c) |
Initialize LSM303D with default settingsInitializes the sensor with: More... | |
bool | driver_lsm303_init_with_config (driver_lsm303_t *driver, hw_i2c_t *i2c, driver_lsm303_accel_scale_t accel_scale, driver_lsm303_mag_scale_t mag_scale) |
Initialize LSM303D with custom scale settings. More... | |
void | driver_lsm303_finalize (driver_lsm303_t *driver) |
Finalize and power down LSM303D. More... | |
bool | driver_lsm303_read_accel (driver_lsm303_t *driver, driver_lsm303_vec3_t *data) |
Read accelerometer dataReturns acceleration in g (Earth gravity = 1g ≈ 9.81 m/s²) More... | |
bool | driver_lsm303_read_mag (driver_lsm303_t *driver, driver_lsm303_vec3_t *data) |
Read magnetometer dataReturns magnetic field strength in gauss. More... | |
bool | driver_lsm303_read_temp (driver_lsm303_t *driver, float *temp) |
Read temperature. More... | |
float | driver_lsm303_get_heading (const driver_lsm303_vec3_t *mag) |
Calculate compass heading from magnetometer dataCalculates the compass heading (direction) from magnetometer readings. More... | |
Driver for the LSM303D 3-axis accelerometer and 3-axis magnetometer with integrated temperature sensor.
Accelerometer full scale range.
Enumerator | |
---|---|
DRIVER_LSM303_ACCEL_SCALE_2G | ±2g (default) |
DRIVER_LSM303_ACCEL_SCALE_4G | ±4g. |
DRIVER_LSM303_ACCEL_SCALE_6G | ±6g. |
DRIVER_LSM303_ACCEL_SCALE_8G | ±8g. |
DRIVER_LSM303_ACCEL_SCALE_16G | ±16g. |
Definition at line 22 of file drivers_lsm303.h.
Magnetometer full scale range.
Enumerator | |
---|---|
DRIVER_LSM303_MAG_SCALE_2GAUSS | ±2 gauss (default) |
DRIVER_LSM303_MAG_SCALE_4GAUSS | ±4 gauss. |
DRIVER_LSM303_MAG_SCALE_8GAUSS | ±8 gauss. |
DRIVER_LSM303_MAG_SCALE_12GAUSS | ±12 gauss. |
Definition at line 34 of file drivers_lsm303.h.
void driver_lsm303_finalize | ( | driver_lsm303_t * | driver | ) |
Finalize and power down LSM303D.
driver | Pointer to driver structure |
float driver_lsm303_get_heading | ( | const driver_lsm303_vec3_t * | mag | ) |
Calculate compass heading from magnetometer dataCalculates the compass heading (direction) from magnetometer readings.
Note: This assumes the sensor is held level (horizontal). For accurate readings when tilted, tilt compensation using accelerometer data is required.
mag | Pointer to magnetometer vector data in gauss |
bool driver_lsm303_init | ( | driver_lsm303_t * | driver, |
hw_i2c_t * | i2c | ||
) |
Initialize LSM303D with default settingsInitializes the sensor with:
driver | Pointer to driver structure |
i2c | Pointer to initialized I2C interface |
bool driver_lsm303_init_with_config | ( | driver_lsm303_t * | driver, |
hw_i2c_t * | i2c, | ||
driver_lsm303_accel_scale_t | accel_scale, | ||
driver_lsm303_mag_scale_t | mag_scale | ||
) |
Initialize LSM303D with custom scale settings.
driver | Pointer to driver structure |
i2c | Pointer to initialized I2C interface |
accel_scale | Accelerometer full-scale range |
mag_scale | Magnetometer full-scale range |
bool driver_lsm303_read_accel | ( | driver_lsm303_t * | driver, |
driver_lsm303_vec3_t * | data | ||
) |
Read accelerometer dataReturns acceleration in g (Earth gravity = 1g ≈ 9.81 m/s²)
driver | Pointer to driver structure |
data | Pointer to vector structure to receive x, y, z values in g |
bool driver_lsm303_read_mag | ( | driver_lsm303_t * | driver, |
driver_lsm303_vec3_t * | data | ||
) |
Read magnetometer dataReturns magnetic field strength in gauss.
driver | Pointer to driver structure |
data | Pointer to vector structure to receive x, y, z values in gauss |
bool driver_lsm303_read_temp | ( | driver_lsm303_t * | driver, |
float * | temp | ||
) |
Read temperature.
driver | Pointer to driver structure |
temp | Pointer to float to receive temperature in degrees Celsius |