1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import smbus2 import time
I2C_ADDR = 0x70 bus = smbus2.SMBus(1)
def read_heading(): bus.write_byte_data(I2C_ADDR, 0x00, 0x31) time.sleep(0.1)
high = bus.read_byte_data(I2C_ADDR, 0x01) low = bus.read_byte_data(I2C_ADDR, 0x02) angle_raw = (high << 8) | low angle_deg = angle_raw / 10.0 return angle_deg
while True: print(f"Heading: {read_heading():.1f}°") time.sleep(0.5)
|