50 Serial.println(
"Failed to find QMC5883L - check your wiring!");
56 float data_rate_hz = 200.0f;
70 Serial.println(
"Magnetometer configured successfully.");
72 Serial.println(
"Magnetometer configuration failed.");
77 Serial.print(
"Manufacturer: "); Serial.println(info.
manufacturer);
78 Serial.print(
"Model: "); Serial.println(info.
model);
79 Serial.print(
"I2C Address: 0x"); Serial.println(info.
i2c_address, HEX);
80 Serial.print(
"Version: "); Serial.println(info.
version);
81 Serial.print(
"UID: 0x"); Serial.println(info.
uid);
85 Serial.print(
"DataRate: "); Serial.println(cfg.
sample_rate);
86 Serial.print(
"FullScaleRange: "); Serial.println(cfg.
range);
87 Serial.print(
"Mode: "); Serial.println((uint8_t)cfg.
mode);
95 Serial.print(
" Magnetic Declination: ");
96 Serial.print(declination_deg, 2);
99 Serial.print(
" Sensitivity: ");
101 Serial.println(
" Gauss/LSB");
105 Serial.println(
"Read data now...");
120 Serial.print(
"Mag:");
121 Serial.print(
" X:"); Serial.print(
x);
122 Serial.print(
" Y:"); Serial.print(
y);
123 Serial.print(
" Z:"); Serial.print(z);
126 Serial.print(
" Sensitivity: ");
128 Serial.print(
" Gauss/LSB");
130 Serial.print(
" Metadata:");
132 Serial.print(data.
raw.
x);
134 Serial.print(data.
raw.
y);
136 Serial.print(data.
raw.
z);
138 Serial.print(
" Heading (rad): ");
140 Serial.print(
" rad");
142 Serial.print(
" Heading (deg): ");
148 Serial.print(
" Magnetic Strength: ");
149 Serial.print(strength, 2);
150 Serial.println(
" μT");
153 Serial.println(
"\tWarning: Data Overflow occurred!");
156 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
bool begin(SensorCommCustom::CustomCallback cb, SensorCommCustomHal::CustomHalCallback hal_cb, uint8_t addr)
Initialize the sensor using custom callback interface.
virtual void setDeclination(float declination_deg)
Set the magnetic declination correction value.
virtual SensorConfig getConfig() const
Get current sensor configuration.
float getSensitivity() const
Get sensor sensitivity.
SensorInfo getSensorInfo() const
Get sensor information.
bool configMagnetometer(OperationMode mode, MagFullScaleRange range, float data_rate_hz, MagOverSampleRatio osr, MagDownSampleRatio dsr=MagDownSampleRatio::DSR_1) override
Configures the magnetometer with multiple parameters.
bool readData(MagnetometerData &data) override
Reads the magnetic field data from the sensor.
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.
SensorQMC5883L magnetometer
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.