🛠 Boussole numérique avec le magnétomètre

micro:bit V2 (BBC micro:bit v2) · intermediaire · Schéma : IMG-microbit-v2-intermediaire-1-microbit-v2-boussole-magnetometre.svg — micro:bit V2 à plat avec rose des vents au-dessus, aiguille pointant vers le N et chiffre de cap affiché sur la matrice LED

Objectifs

Transformer la micro:bit V2 en boussole en utilisant le magnétomètre du capteur combiné (LSM303 ou FXOS8700CQ, sur le bus I²C interne). Vous apprendrez à lire compass.heading, à calibrer le capteur et à afficher un cap en degrés.

Matériel

Code complet

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 renvoie l'angle entre l'axe y de la carte et le nord magnétique. Le magnétomètre partage l'I²C interne (P19/P20) avec le capteur de mouvement : il est fortement déconseillé de réutiliser ces broches.

Vérification attendue

Après calibration (mouvements en « huit » ou dans les 6 axes), le cap affiché suit votre rotation : environ 0° vers le nord magnétique, 90° vers l'est. Les points cardinaux N/NE/E… défilent correctement.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels