🛠 Détecter l'inclinaison et les gestes avec l'accéléromètre
Objectifs
Exploiter le capteur combiné accéléromètre + magnétomètre embarqué (ST LSM303, ou NXP FXOS8700CQ selon les séries de fabrication) pour lire l'inclinaison (x, y, z en milli-g) et reconnaître les gestes officiels : shake, tilt up/down/left/right, face up/down, freefall.
Matériel
- 1 carte micro:bit V2
- 1 câble micro-USB pour le flash, puis fonctionnement autonome sur pile
Code complet
from microbit import *
while True:
# Inclinaison continue : flèches directionnelles
if accelerometer.get_y < -300: # penché vers le haut
display.show(Image.ARROW_N)
elif accelerometer.get_y > 300: # penché vers le bas
display.show(Image.ARROW_S)
elif accelerometer.get_x < -300: # penché à gauche
display.show(Image.ARROW_W)
elif accelerometer.get_x > 300: # penché à droite
display.show(Image.ARROW_E)
# Gestes ponctuels
elif accelerometer.was_gesture('shake'):
display.show(Image.YES)
sleep(400)
elif accelerometer.is_ready:
display.show(Image.HAPPY)
sleep(50)
get_x/get_y/get_z renvoient l'accélération en milli-g (au repos, l'axe vers le bas indique environ 1000). Les seuils ±300 évitent les déclenchements parasites.
Vérification attendue
Inclinez la carte : une flèche pointe dans la direction du mouvement. Secouez-la : la coche « oui » apparaît. Posée à plat : smiley. Le tout fonctionne débranchée.
Erreurs fréquentes
- Comparer à des seuils trop petits (< 100) : l'affichage clignote sans cesse à cause du bruit du capteur.
- Confondre
was_gesture(ponctuel, efface l'historique) etcurrent_gesture(état continu). - Inverser les axes x/y selon la façon dont on tient la carte : testez avant d'écrire les seuils.
- Attendre le magnétomètre ici : la boussole est traitée au niveau intermédiaire.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython