Utiliser l'accéléromètre

La carte microbit est livrée avec un accéléromètre. Comme sur les smartphones, elle est capable de détecter son orientation. Il est donc possible de mesurer le mouvement selon trois axes :

  • X - l'inclinaison de gauche à droite.

  • Y - l'inclinaison d'avant en arrière.

  • Z - le mouvement haut et bas.

Il y a une méthode pour chaque axe qui renvoie un nombre positif ou négatif qui indique une mesure en milli-g. Lorsque la lecture est de 0, on est « aligné » selon cet axe.

Par exemple, voici un « niveau à bulle » très simple qui utilise get_x pour mesurer l'aligmenet de l'appareil selon l'axe X:

1
from microbit import *
2
3
while True:
4
    lecture = accelerometer.get_x()
5
    if lecture > 20:
6
        display.show("D")
7
    elif lecture < -20:
8
        display.show("G")
9
    else:
10
        display.show("-")

Si on tient l'appareil horizontalement il devrait afficher - ; en revanche, si tu l'inclines vers la gauche ou vers la droite il devrait afficher G ou D respectivement.

Complément

Il existe bien sûr accelerometer.get_y() et accelerometer.get_z().

Détecter des gestes

L'accéléromètre sait aussi interpréter les données d'accélération en gestes prédéfinis. Observez le code ci-dessous :

1
from microbit import *
2
3
while True:
4
    gesture = accelerometer.current_gesture()
5
    if gesture == "face up":
6
        display.show(Image.HAPPY)
7
    else:
8
        display.show(Image.ANGRY)

ComplémentGestes prédéfinis

Les gestes reconnus sont : up, down, left, right, face up, face down, freefall, 3g, 6g, 8g, shake

Comme pour les boutons :

  • les gestes sont accumulés dans une pile que l'on peut interroger par accelerometer.get_gestures()

  • on peut détecter si un geste (par exemple une secousse) a eu lieu par accelerometer.was_gesture("shake")

  • on peut détecter si un geste est en cours par accelerometer.is_gesture("up")