HomeTortue graphiqueGPanelGameGrid WebTigerPython
 Python - Online
sensor
Deutsch   English   Français   

3. ACCÉLÉROMÈTRE

 

 

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.

L'accéléromètre est bien visible sur la carte électronique. Des capteurs similaires sont également intégrés dans la plupart des smartphones.

Le capteur peut mesurer l'accélération (y compris celle due à la gravité) selon les axes x, y et z. À partir de ces composantes, il est possible de calculer l'inclinaison vers l'avant (Pitch) et l'inclinaison latérale (Roll)..

 

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.

Dans le programme, tu mesures l'accélération selon l'axe x toutes les 100 millisecondes à l'aide d'une boucle infinie et tu affiches la valeur dans la fenêtre du terminal avec print(acc).

De plus, tu affiches sur l'écran une flèche pointant vers la gauche lorsque la valeur est positive et une flèche pointant vers la droite lorsqu'elle est négative.

.
 

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)  
► Copy to clipboard

 

Bulle de niveau à bulle

 

Le micro:bit doit fonctionner comme la bulle d'un niveau à bulle. Pour cela, tu utilises le fait que les composantes x et y de l'accélération sont approximativement égales à 0 lorsque la carte se trouve en position horizontale.

 

 


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)
► Copy to clipboard

 

 

À 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

 

 

1.
Complète le premier exemple de manière à mesurer également l'inclinaison du micro:bit selon l'axe y et à l'afficher à l'aide des flèches correspondantes Image.ARROW_N et Image.ARROW_S.

2.

En inclinant le micro:bit, tu dois pouvoir allumer individuellement tous les pixels situés sur le bord de l'écran.

 

 

 

 

 
     

 

 

   
3-2

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)