58 Serial.print(
"Failed to init BMM150 - check your wiring!");
64 Serial.println(
"Init BMM150 Sensor success!");
67 float data_rate_hz = 200.0f;
81 Serial.println(
"Magnetometer configured successfully.");
83 Serial.println(
"Magnetometer configuration failed.");
88 Serial.print(
"Manufacturer: "); Serial.println(info.
manufacturer);
89 Serial.print(
"Model: "); Serial.println(info.
model);
90 Serial.print(
"I2C Address: 0x"); Serial.println(info.
i2c_address, HEX);
91 Serial.print(
"Version: "); Serial.println(info.
version);
92 Serial.print(
"UID: 0x"); Serial.println(info.
uid);
96 Serial.print(
"DataRate: "); Serial.println(cfg.
sample_rate);
97 Serial.print(
"FullScaleRange: "); Serial.println(cfg.
range);
98 Serial.print(
"Mode: "); Serial.println((uint8_t)cfg.
mode);
106 Serial.print(
" Magnetic Declination: ");
107 Serial.print(declination_deg, 2);
110 Serial.print(
" Sensitivity: ");
112 Serial.println(
" Gauss/LSB");
116 Serial.println(
"Read data now...");
131 Serial.print(
"Mag:");
132 Serial.print(
" X:"); Serial.print(
x);
133 Serial.print(
" Y:"); Serial.print(
y);
134 Serial.print(
" Z:"); Serial.print(z);
137 Serial.print(
" Sensitivity: ");
139 Serial.print(
" Gauss/LSB");
141 Serial.print(
" Metadata:");
143 Serial.print(data.
raw.
x);
145 Serial.print(data.
raw.
y);
147 Serial.print(data.
raw.
z);
149 Serial.print(
" Heading (rad): ");
151 Serial.print(
" rad");
153 Serial.print(
" Heading (deg): ");
159 Serial.print(
" Magnetic Strength: ");
160 Serial.print(strength, 2);
161 Serial.println(
" μT");
164 Serial.println(
"\tWarning: Data Overflow occurred!");
167 Serial.println(
"\tWarning: Data Skip occurred!");
OperationMode
Enumeration of sensor operation modes.
MagFullScaleRange
Enumeration defining full-scale range settings for the sensor.
MagOverSampleRatio
Enumeration defining over-sample ratios for the sensor.
@ OSR_1
1x over-sample ratio
SensorBMM150 magnetometer
bool begin(CommInterface interface, SensorCommCustom::CustomCallback callback, SensorCommCustomHal::CustomHalCallback hal_callback, uint8_t addr=0)
Initialize the sensor using custom callback interface.
virtual void setDeclination(float declination_deg)
Set the magnetic declination correction value.
Driver for Bosch BMM150 magnetometer.
bool readData(MagnetometerData &data) override
Read one magnetometer sample.
bool configMagnetometer(OperationMode mode, MagFullScaleRange range, float odr, MagOverSampleRatio osr, MagDownSampleRatio dsr=MagDownSampleRatio::DSR_1) override
Apply combined magnetometer configuration.
virtual SensorConfig getConfig() const
Get current sensor configuration.
float getSensitivity() const
Get sensor sensitivity.
SensorInfo getSensorInfo() const
Get sensor information.
static const char * typeToString(SensorType type)
Convert sensor type enumeration to string representation.
float dmsToDecimalDegrees(int degrees, int minutes, float seconds=0.0f)
Convert degrees-minutes-seconds to decimal degrees.
float calculateMagneticStrength(const MagnetometerData &data)
Calculate total magnetic field strength.
float gaussToMicroTesla(float gauss)
Converts Gauss to microTesla.
Structure representing magnetometer data.
float heading_degrees
heading angle (degrees)
float heading
heading angle (radians)
bool skip_data
skip data flag
SensorVector magnetic_field
magnetic field strength (Gauss)
bool overflow
data overflow flag
int16_t x
X-axis raw value.
int16_t y
Y-axis raw value.
int16_t z
Z-axis raw value.
Structure representing sensor configuration parameters.
float sample_rate
Sample rate in Hz.
float range
Measurement range.
OperationMode mode
Operation mode.
Structure containing sensor identification information.
uint8_t version
Hardware/firmware version.
uint8_t i2c_address
Default I2C address.
uint32_t uid
Unique identifier.
SensorType type
Sensor type.
const char * manufacturer
Manufacturer name.
const char * model
Model name/identifier.