![]()
TU APPRENDRAS ICI... |
comment utiliser l'accéléromètre pour détecter les changements d'orientation et les mouvements du micro:bit.. |
VALEURS DU CAPTEUR |
L'accéléromètre du micro:bit mesure aussi bien l'accélération constante due à la gravité terrestre, d'environ 10 m/s² et dirigée verticalement vers le bas, que les accélérations provoquées par les mouvements.
Le principe est similaire à celui de l'indicateur d'assiette d'un avion. Lorsque tu inclines la carte vers l'avant ou vers l'arrière, l'angle de tangage (Pitch) change. Lorsque tu l'inclines latéralement, c'est l'angle de roulis (Roll) qui change..
Dans ton programme, tu utilises l'objet accelerometer et tu appelles les fonctions accelerometer.get_x(), accelerometer.get_y() ou accelerometer.get_z(). Celles-ci renvoient des valeurs comprises approximativement entre -2000 et 2000, correspondant à des accélérations de -20 m/s² à 20 m/s². Avec accelerometer.get_values(), tu obtiens les trois valeurs sous forme d'un tuple. |
EXAMPLES |
Lire les valeurs du capteur Lance le programme ci-dessous, puis incline le micro:bit vers la gauche et vers la droite à partir de sa position horizontale. Observe les valeurs du capteur qui s'affichent dans la fenêtre du terminal.
Programme: from microbit import * while True: acc = accelerometer.get_x() print (acc) if acc > 0: display.show(Image.ARROW_E) else: display.show(Image.ARROW_W) sleep(100)
Un seul pixel est affiché. Il se déplace vers la droite, vers la gauche, vers le haut ou vers le bas selon l'inclinaison de la carte. Le but est d'orienter le micro:bit de manière à ce que la LED centrale s'allume. Dans le programme, tu utilises quatre conditions pour déterminer les coordonnées x et y du pixel. Tu éteins ensuite le pixel précédent avant d'allumer le nouveau. Programme: from microbit import * x = 1 y = 1 while True: accX = accelerometer.get_x() accY = accelerometer.get_y() if accX > 100 and x < 4: x += 1 elif accX < -100 and x > 0: x -= 1 elif accY > 100 and y < 4: y += 1 elif accY < -100 and y > 0: y -= 1 display.clear() display.set_pixel(x, y, 9) sleep(100) |
À RETENIR... |
| L'accéléromètre permet de détecter les mouvements et l'orientation du micro:bit. En général, les valeurs du capteur sont relevées régulièrement dans une boucle de mesure, toutes les 10 à 100 millisecondes. Cette technique est également appelée interrogation périodique des capteurs (polling).. |
EXERCICES À RÉSOUDRE |
|
![]()
Remarques techniques :
À partir des trois composantes d'accélération, tu peux calculer les angles de tangage et de roulis. Lance le programme suivant et incline la planche sur le côté, vers l'avant ou vers l'arrière. Les angles de rotation s'affichent en degrés dans la fenêtre du terminal.
from microbit import * from math import * def getPitch(): a = accelerometer.get_values() pitch = atan2(a[1], -a[2]) return int(degrees(pitch)) def getRoll(): a = accelerometer.get_values() anorm = sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]) roll = asin(a[0] / anorm) return int(degrees(roll)) while True: pitch = getPitch() roll = getRoll() print("p: " + str(pitch)) print("r: " + str(roll)) print() sleep(100)