boussole.py
Le magnétomètre de la V2 donne le cap au nord (0-359°) ; le script affiche une flèche par palier de 45° et le cap sur la console. La calibration en huit se déclenche automatiquement au premier lancement.
Matériel requis
Une BBC micro:bit V2 (nRF52833, matrice 5×5 LED, boutons A/B, accéléromètre + boussole, microphone et haut-parleur) alimentée par USB ou pile. Aucun composant : boussole LSM303 intégrée.
Câblage
Aucun câblage. Éloignez aimants, enceintes et bureau métallique qui faussent la mesure.
Fonctionnement
compass.heading() renvoie l'angle entre la broche USB et le nord magnétique ; set_heading(0) recale le zéro ; la table FLECHES convertit l'angle en image cardinale.
Exécution
Ouvrez python.microbit.org, collez le programme MicroPython et envoyez-le vers la carte (la micro:bit apparaît comme lecteur MICROBIT). Appuyez sur reset pour relancer.
Variantes
Transformez en détecteur de métal (écart type du cap qui explose), ou combinez avec le radio pour télémesurer un cap distant.
boussole.py
# Boussole : cap en degres + fleche, avec calibration au 1er lancer.
from microbit import *
FLECHES = [Image.ARROW_N, Image.ARROW_NE, Image.ARROW_E,
Image.ARROW_SE, Image.ARROW_S, Image.ARROW_SW,
Image.ARROW_W, Image.ARROW_NW]
# Calibration : incliner la carte en huit jusqu'au coche.
if not compass.is_calibrated():
display.show(Image.TARGET)
compass.calibrate()
compass.set_heading(0) # reference actuelle = nord
dernier = -1
while True:
cap = int(compass.heading()) # 0..359 degres
if abs(cap - dernier) >= 15: # rafraichir si mouvement
dernier = cap
index = ((cap + 22) % 360) // 45
display.show(FLECHES[index])
print('cap = %d deg' % cap)
if button_a.was_pressed():
compass.clear_cache()
display.show(Image.ALL_CLOCKS)
sleep(100)
# Le magnetometre est sensible aux aimants et au metal du bureau.