TigerJython4Kids
Robotique Robotik
sensor
Deutsh   English   Français

3. ACCÉLÉROMÈTRE

 

 

OBJECTIFS DE CETTE SECTION

 

Cette section montre comment utiliser l’accéléromètre intégré au micro:bit pour déterminer son inclinaison ainsi que les mouvements qu’il subit.

 

 

VALEURS DU SENSEUR

 

L’accéléromètre du micro:bit mesure constamment aussi bien l’accélération de la pesanteur à la surface de la terre (environ 9.81 m/s2), dirigée verticalement vers le bas, que des accélérations dues aux changements de vitesse dans les deux autres directions.

L’accéléromètre est bien visible sur la carte du micro:bit. Il est tout-à-fait analogue à ceux qui se trouvent dans les smartphones et qui permettent de déterminer leur orientation ou leurs mouvements.

Ce senseur peut mesurer l’accélération dans chacune des trois dimensions (axes x, y et z), y compris l’accélération de la pesanteur terrestre.

 

À partir de ces valeurs lues en permanence par le senseur, il est possible de déterminer l’inclinaison avant (pitch) et l’inclinaison latérale (roll).

Au sein d’un programme, on utilise l’objet accelerometer et on invoque la méthode accelerometer.get_x(), accelerometer.get_y() et accelerometer.get_z() pour utiliser les valeurs lues par le senseur. Chaque axe va fournir des valeurs situées entre -2000 et 2000 qui correspondent à des accélérations de -20 m/x2 à 20 m/s2.On peut même récupérer les trois valeurs en même temps à l’aide de (ax, ay, az) = acceloremeter.get_values().

 

 

EXEMPLES


  Interroger les valeurs lues par l’accéléromètre
Télécharger le programme ci-dessus sur le micro:bit et le lancer tout en remuant le micro:bit un peu dans tous les sens. Observer les valeurs lues par l’accéléromètre dans le terminal de TigerJython.

Ce programme lit les valeurs toutes les 100 ms et les affiche dans le terminal avec print. De plus, une flèche correspondant à la direction du mouvement est affichée sur l’écran LEDs du micro:bit.
 

Program:

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

 

Niveau à bulles
 
Le micro:bit peut être utilisé comme un niveau à bulles pour déterminer si une surface est bien horizontale. On utilise pour ce faire le fait qu’à l’horizontal, les composantes x et y de l’accélération de la pesanteur sont nulles.

 

 


L’écran montre un pixel qui sera bien centré si le micro:bit est bien à l’horizontale ou qui sera décalé en direction de l’inclinaison dans le cas contraire. Le but est donc de mettre le micro:bit parfaitement à plat, de sorte qu’uniquement la LED centrale soit allumée.

Program:

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

 

 

À TOI DE JOUER

 

 

1.
Modifier le premier exemple pour que la composant y de l’accélération soit également prise en compte et affiche la flèche adéquate sur l’écran avec Image.ARROW_N et Image.ARROW_S.

2.

Faire en sorte que tous les pixels du bords soient allumés si l’on bascule le micro:bit..

 

 

3.

On veut mesurer les secousses subies par le micro:bit. On récupère pour cela les trois composants de l’accélération dans le tuple a avec a = accelerometer.get_values()

On ne considère cependant que les composantes x et y avec

b = √ a[0] * a[0] + a[1] * a[1]

pour calculer l’intensité du vecteur accélération.

a)

Afficher dans le terminal l’intensité de l’accélération 50 fois par seconde au sein d’une boucle infinie.

b)

Démarrer la mesure de l’accélération pendant 1 seconde après le démarrage du programme et écrire l’intensité maximale mesurée dans le terminal.

c)

Afficher l’intensité maximale sur l’écran LED du micro:bit sous forme de texte défilant.
Indication: Pour transformer la valeur en nombre entier, utiliser la fonction int(). Pour retransformer ce nombre entier en texte et le passer à la méthode .scrollI(), utiliser la fonction str().

d) Créer un jeu “tremblement de terre”. Le gagant est celui qui arrive à produire la plus grande valeur de tremblement. Pour que le jeu soit intéressant, la mesure ne commence qu’après un temps d’attente aléatoire compris entre 3 et 6 secondes, signalé par l’apparition du symbole > sur l’écran du micro:bit. Avant l’apparition de ce symbole, il est interdit de remuer le micro:bit.