Hummingbird Flight Software
Flight software for the Hummingbird FCU quadcopter flight controller. Designed to run on the Teensy 4.1. Developed with VSCode+PlatformIO.
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
LIS3MDL_Mag Class Reference

STMicroelectronics LIS3MDL magnetometer sensor class. More...

#include <lis3mdl_magnetometer.h>

Public Member Functions

 LIS3MDL_Mag (TwoWire *userWire=&SENSOR_I2C)
 I2C Sensor class for the LIS3MDL magnetometer. More...
 
 ~LIS3MDL_Mag ()
 
bool Initialize (LIS3MDL_MeasRange_t measRange=LIS3MDL_RANGE_4G)
 Initialize the LIS3MDL magnetometer and specify the measurement range. More...
 
bool ReadSensor ()
 Read magnetometer registers and extract measurements. More...
 
float GetMx ()
 Return X-magnetometer reading in [uT]. More...
 
float GetMy ()
 Return Y-magnetometer reading in [uT]. More...
 
float GetMz ()
 Return Z-magnetometer reading in [uT]. More...
 
float GetTemperature ()
 Read temperature from the magnetometer sensor. More...
 

Public Attributes

uint32_t prevMeasMicros
 Previous measurement micros() More...
 

Private Member Functions

void I2Cwrite8 (uint8_t regOfInterest, uint8_t valToWrite)
 Write to device register over I2C. More...
 
uint8_t I2Cread8 (uint8_t regOfInterest)
 Read register value from I2C device. More...
 

Private Attributes

float _mx
 x-magnetometer reading [uT] More...
 
float _my
 y-magnetometer reading [uT] More...
 
float _mz
 z-magnetometer reading [uT] More...
 
TwoWire * _SensorWire
 I2C/wire interface the sensor is on. More...
 
LIS3MDL_MeasRange_t _range
 Sensor measurement range. More...
 

Detailed Description

STMicroelectronics LIS3MDL magnetometer sensor class.

Constructor & Destructor Documentation

◆ LIS3MDL_Mag()

LIS3MDL_Mag::LIS3MDL_Mag ( TwoWire *  userWire = &SENSOR_I2C)

I2C Sensor class for the LIS3MDL magnetometer.

Parameters
userWireI2C bus that the sensor is attached to.

◆ ~LIS3MDL_Mag()

LIS3MDL_Mag::~LIS3MDL_Mag ( )
inline

Member Function Documentation

◆ GetMx()

float LIS3MDL_Mag::GetMx ( )

Return X-magnetometer reading in [uT].

◆ GetMy()

float LIS3MDL_Mag::GetMy ( )

Return Y-magnetometer reading in [uT].

◆ GetMz()

float LIS3MDL_Mag::GetMz ( )

Return Z-magnetometer reading in [uT].

◆ GetTemperature()

float LIS3MDL_Mag::GetTemperature ( )

Read temperature from the magnetometer sensor.

Return as float in degrees C. Temperature ranges from -40C to +85C. ODR is the same as the mag's ODR.

Returns
Floating-point temperature in [C].

◆ I2Cread8()

uint8_t LIS3MDL_Mag::I2Cread8 ( uint8_t  regOfInterest)
private

Read register value from I2C device.

Parameters
regOfInterestRegister address on device.
Returns
Value/data in register.

◆ I2Cwrite8()

void LIS3MDL_Mag::I2Cwrite8 ( uint8_t  regOfInterest,
uint8_t  valToWrite 
)
private

Write to device register over I2C.

Parameters
regOfInterestRegister address on device.
valToWriteValue to write to register.

◆ Initialize()

bool LIS3MDL_Mag::Initialize ( LIS3MDL_MeasRange_t  measRange = LIS3MDL_RANGE_4G)

Initialize the LIS3MDL magnetometer and specify the measurement range.

Parameters
measRangeMagnetometer measurement range.
See also
LIS3MDL_MeasRange_t

◆ ReadSensor()

bool LIS3MDL_Mag::ReadSensor ( )

Read magnetometer registers and extract measurements.

Converts raw readings in Gauss [G] to microtesla [uT].

Returns
true if successful, false if invalid measurement range.

Member Data Documentation

◆ _mx

float LIS3MDL_Mag::_mx
private

x-magnetometer reading [uT]

◆ _my

float LIS3MDL_Mag::_my
private

y-magnetometer reading [uT]

◆ _mz

float LIS3MDL_Mag::_mz
private

z-magnetometer reading [uT]

◆ _range

LIS3MDL_MeasRange_t LIS3MDL_Mag::_range
private

Sensor measurement range.

◆ _SensorWire

TwoWire* LIS3MDL_Mag::_SensorWire
private

I2C/wire interface the sensor is on.

◆ prevMeasMicros

uint32_t LIS3MDL_Mag::prevMeasMicros

Previous measurement micros()


The documentation for this class was generated from the following files: