boussole.py
El magnetómetro de la V2 da el rumbo al norte (0-359°); el script muestra una flecha por tramo de 45° y el rumbo en consola. La calibración en ocho se lanza sola en el primer arranque.
Material necesario
Una BBC micro:bit V2 (nRF52833, matriz LED 5×5, botones A/B, acelerómetro + brújula, micrófono y altavoz) alimentada por USB o pila. Sin componentes: brújula LSM303 integrada.
Cableado
Sin cableado. Aleja imanes, altavoces y escritorios metálicos: falsean la medida.
Funcionamiento
compass.heading() devuelve el ángulo entre el conector USB y el norte magnético; set_heading(0) recalibra el cero; la tabla FLECHES convierte el ángulo en imagen cardinal.
Ejecución
Abre python.microbit.org, pega el programa MicroPython y envíalo a la placa (la micro:bit aparece como unidad MICROBIT). Pulsa reset para relanzar.
Variantes
Conviértelo en detector de metal (la desviación del rumbo se dispara), o combínalo con radio para telemedir un rumbo.
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.