UPM

The UPM API is a high level sensor library for IoT devices using MRAA. See examples here. Back to index page.
SparkFun sensor images provided under CC BY-NC-SA-3.0.

LSM303AGR Class

Module: lsm303agr

The LSM303AGR is an ultra-low-power high-performance system-in-package featuring a 3D digital linear acceleration sensor and a 3D digital magnetic sensor. The LSM303AGR has linear acceleration full scales of 2g/4g/8g/16g and a magnetic field dynamic range of 50 Gauss.
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 only I2C operation.
This device requires 3.3v operation.

Methods

LSM303AGR

(
  • bus
  • acc_addr
  • mag_addr
)
Number

LSM303AGR constructor
This driver can only support I2C. SPI requires support for 3-wire SPI which we cannot currently handle. Only the basic capabilities of the device are supported, however there is a full register map defined ( lsm303agr_defs.h ), and with access to the bus read/write functions, any desired additional functionality can be implemented.

Parameters:

  • bus Number

    I2C bus to use

  • acc_addr Number

    The I2C address of the accelerometer. Use -1 if you do not wish to use the accelerometer.

  • mag_addr Number

    The I2C address of the magnetometer. Use -1 if you do not wish to use the magnetometer.

Returns:

Number:

The device context, or NULL if an error occurred

update

()

Update the internal stored values from sensor data. This method must be called before querying the acceleration, magnetometer, or temperature.

getMagnetometer

(
  • x
  • y
  • z
)

Return magnetometer data in micro-Teslas (uT). update() must have been called prior to calling this method.

Parameters:

  • x Float *

    Pointer to a floating point value that will have the current x component placed into it

  • y Float *

    Pointer to a floating point value that will have the current y component placed into it

  • z Float *

    Pointer to a floating point value that will have the current z component placed into it

getMagnetometer

() Std::vector float

Return magnetometer data in micro-Teslas (uT) in the form of a floating point vector. update() must have been called prior to calling this method.

Returns:

Std::vector float :

A floating point vector containing x, y, and z in that order

getAccelerometer

(
  • x
  • y
  • z
)

Return acceleration data in gravities. update() must have been called prior to calling this method.

Parameters:

  • x Float *

    Pointer to a floating point value that will have the current x component placed into it

  • y Float *

    Pointer to a floating point value that will have the current y component placed into it

  • z Float *

    Pointer to a floating point value that will have the current z component placed into it

getAccelerometer

() Std::vector float

Return acceleration data in gravities in the form of a floating point vector. update() must have been called prior to calling this method.

Returns:

Std::vector float :

A floating point vector containing x, y, and z in that order

getTemperature

() Number

Return temperature data in degrees Celsius. NOTE: This is not the ambient room temperature. update() must have been called prior to calling this method.

Returns:

Number:

Temperature in degrees Celsius

init

(
  • usage
)

Initialize the device and start operation. This function is called from the constructor so it will not typically need to be called by a user unless the device is reset. It will initialize the accelerometer and magnetometer (if enabled) to certain default running modes.
For the accelerometer, the full scale will be set to 2G, mode continuous, all axes enabled, BDU enabled, temperature measurement enabled, and an output data rate (ODR) of 100Hz with the power mode set at high resolution.
For the magnetometer, temperature compensation will be enabled, mode continuous, and an output data rate of 10Hz with the power mode set at high resolution.

Parameters:

  • usage LSM303AGR_POWER_MODE_T

    One of the LSM303AGR_POWER_MODE_T values. The default is LSM303AGR_POWER_HIGH_RESOLUTION.

setFullScale

(
  • fs
)

Set the full scale (sensitivity) value for the accelerometer. This device supports 2G, 4G, 8G, and 16G full scale modes.

Parameters:

  • fs LSM303AGR_A_FS_T

    One of the LSM303AGR_A_FS_T values

setPowerMode

(
  • mode
)

Set an operating power mode. There are 3 modes available: low power, normal, and high resolution.

Parameters:

  • mode LSM303AGR_POWER_MODE_T

    One of the LSM303AGR_POWER_MODE_T values. The default set at initialization time is LSM303AGR_POWER_HIGH_RESOLUTION.

setAccelerometerODR

(
  • odr
)

Set the accelerometer output data rate (ODR)

Parameters:

  • odr LSM303AGR_A_ODR_T

    One of the LSM303AGR_A_ODR_T values. The default set at initialization time is LSM303AGR_A_ODR_100HZ.

setMagnetometerODR

(
  • odr
)

Set the magnetometer output data rate (ODR)

Parameters:

  • odr LSM303AGR_CFG_A_M_ODR_T

    One of the LSM303AGR_CFG_A_M_ODR_T values. The default set at initialization time is LSM303AGR_CFG_A_M_ODR_10HZ.

getAccelerometerInt1Config

() Number

Return the accelerometer interrupt 1 config register. This register allows you to enable various interrupt conditions. See the datasheet for details.

Returns:

Number:

A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits

getAccelerometerInt2Config

() Number

Return the accelerometer interrupt 2 config register. This register allows you to enable various interrupt conditions. See the datasheet for details.

Returns:

Number:

A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits

setAccelerometerInt1Config

(
  • bits
)

Set the accelerometer interrupt 1 config register. See the datasheet for details.

Parameters:

  • bits Number

    A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits

setAccelerometerInt2Config

(
  • bits
)

Set the accelerometer interrupt 2 config register. See the datasheet for details.

Parameters:

  • bits Number

    A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits

getMagnetometerIntConfig

() Number

Return the magnetometer interrupt config register. See the datasheet for details.

Returns:

Number:

A bitmask of LSM303AGR_INT_CTRL_REG_M_BITS_T bits

setMagnetometerIntConfig

(
  • bits
)

Set the magnetometer (mag) interrupt config register. See the datasheet for details.

Parameters:

  • bits Number

    A bitmask of LSM303AGR_INT_CTRL_REG_M_BITS_T bits

getAccelerometerInt1Src

() Number

Return the accelerometer interrupt 1 source register. This register indicates which interrupts have been triggered. See the datasheet for details.

Returns:

Number:

a bitmask of LSM303AGR_INT_SRC_A_BITS_T bits

getAccelerometerInt2Src

() Number

Return the accelerometer interrupt 2 source register. This register indicates which interrupts have been triggered. See the datasheet for details.

Returns:

Number:

a bitmask of LSM303AGR_INT_SRC_A_BITS_T bits

getMagnetometerIntSrc

() Number

Return the magnetometer (mag) interrupt source register. This register indicates which interrupts have been triggered. See the datasheet for details.

Returns:

Number:

a bitmask of LSM303AGR_INT_SRC_REG_M_BITS_T bits

installISR

(
  • intr
  • gpio
  • level
  • isr
  • arg
)

Install an interrupt handler

Parameters:

  • intr LSM303AGR_INTERRUPT_PINS_T

    One of the LSM303AGR_INTERRUPT_PINS_T values specifying which interrupt pin you are installing

  • gpio Number

    GPIO pin to use as interrupt pin

  • level Mraa::Edge

    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 Function

    The interrupt handler, accepting a void * argument

  • arg Void *

    The argument to pass the the interrupt handler

uninstallISR

(
  • intr
)

Uninstall a previously installed interrupt handler

Parameters:

  • intr LSM303AGR_INTERRUPT_PINS_T

    One of the LSM303AGR_INTERRUPT_PINS_T values specifying which interrupt pin you are removing