Compass
Heading in degrees, stated plainly
Page 43 reads a QMC5883L (I2C 0x0D) as an electronic compass: heading in large digits with an eight-point bearing (N / NE / E …), the three axis values on the right, and the health score at the bottom.
Heading comes from `atan2(Y, X)` normalised to 0–360°. Initialisation follows the datasheet order: `0x0B=0x01` enables the SET/RESET period, `0x09=0x1D` selects OSR512 / ±8G / 200 Hz continuous, then six bytes are read from `0x00`–`0x05` (X/Y/Z, two bytes each, little-endian).
On-screen interface
A recreation of this page on the 2.41-inch AMOLED display (600 × 450). Actual interaction and layout follow the latest firmware.
Key capabilities
Heading + bearing
Degrees and the compass point together, no mental arithmetic.
Raw axes
X/Y/Z values show which direction interference comes from.
Continuous mode
200 Hz continuous sampling, so rotation stays smooth.
Health score
Missing, wrong ID and jittery readings are reported separately.
Technical specs
Typical scenarios
Mounting direction
Confirm which way the antenna or camera faces once installed.
Interference hunting
When an axis value jumps, move motors or speakers away.
Related commands
page 43 Open the compass qmc Read heading and raw axes once qmc on | off Start or stop continuous sampling
- This is 0x0D, not the HMC5883L at 0x1E — the drivers are not interchangeable, and the wrong module stays “not found”.
- Most accurate when level; there is no tilt compensation, so heading drifts when tilted.
- Motors, speakers and steel desks nearby make it jump — expected behaviour.