🛠 Boussole numérique avec le magnétomètre
Objetivos
Transformar la micro:bit V2 en una brújula utilizando el magnetómetro del sensor combinado (LSM303 o FXOS8700CQ, en el bus I²C interno). Aprenderás a leer compass.heading, a calibrar el sensor y a mostrar una dirección en grados.
Material
- 1 placa micro:bit V2
- 1 cable micro-USB
- Alejar metales, imanes y altavoces Bluetooth del lugar de medición
Código completo
from microbit import *
# Calibration : incliner la carte dans les 6 directions
# jusqu'à ce que la croix se referme (si pas déjà calibrée)
if not compass.calibration_level:
display.show("C")
while compass.calibration_level < 10:
sleep(100)
display.show(Image.YES)
while True:
cap = compass.heading # 0..359 degrés
if cap < 22.5 or cap >= 337.5:
bss = "N"
elif cap < 67.5:
bss = "NE"
elif cap < 112.5:
bss = "E"
elif cap < 157.5:
bss = "SE"
elif cap < 202.5:
bss = "S"
elif cap < 247.5:
bss = "SO"
elif cap < 292.5:
bss = "O"
else:
bss = "NO"
display.scroll(str(cap), delay=40)
display.show(bss)
sleep(500)
compass.heading devuelve el ángulo entre el eje y de la placa y el norte magnético. El magnetómetro comparte el I²C interno (P19/P20) con el sensor de movimiento: está muy desaconsejado reutilizar estos pines.
Verificación esperada
Tras la calibración (movimientos en «ocho» o en los 6 ejes), la dirección mostrada sigue tu rotación: aproximadamente 0° hacia el norte magnético, 90° hacia el este. Los puntos cardinales N/NE/E… se muestran correctamente.
Errores frecuentes
- No calibrar cerca de un escritorio metálico o de un altavoz: la dirección sigue siendo incorrecta incluso tras recalibrar.
- Confundir norte magnético y norte geográfico (declinación local de varios grados).
- La dirección salta de 350 a 10: es normal cerca del norte, gestiona el paso a 360 en tus comparaciones.
- Usar P19/P20 para otro I²C: desconectas el sensor integrado.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython