Aller au contenu

L'accéléromètre

On rappelle que l'on utilise le logiciel Mu en mode BBC pour écrire le code puis le flasher sur la carte.
Sachez qu'il existe un éditeur en ligne .

L'orientation

La carte micro:bit est livrée avec un accéléromètre. Elle est capable de détecter son orientation dans l'espace selon les trois coordonnées x, y et z

Pour récupérer l'information d'orientation de la carte selon l'axe x, il faut utiliser l'instruction dx = accelerometer.get_x() La variable dx contiendra un entier positif ou négatif selon la direction, les valeurs sont comprises entre -1024 et 1024.

Exercice 1

  1. Recopier le code qui suit dans l'éditeur du logiciel Mu, puis appuyez sur le bouton mu pour le flasher sur votre carte.

from microbit import *

while True:
    dx = accelerometer.get_x()
    display.scroll(dx)
    sleep(500)
2. Tester en bougeant la carte
3. Modifier le code pour utiliser l'orientation selon l'axe des y puis tester. Essayer ensuite l'orientation selon l'axe des z.

Exercice 2

  1. Prévoir ce que fait ce programme puis le tester sur votre carte.

from microbit import *

x = 0
y = 0

while True:
    display.set_pixel(x,y,0)
    if button_a.was_pressed():
        x = x - 1
    if button_b.was_pressed():
        x = x + 1
    x = max(0, min(x, 4))
    display.set_pixel(x,y,9)
    sleep(20)
2. Expliquer le rôle de la ligne x = max(0, min(x, 4))
3. Adapter le programme ci-dessus afin que le point lumineux puisse se déplacer verticalement. Pour cela, utiliser l'information d'orientation selon l'axe des y :

  • Pour récupérer l'information d'orientation de la carte, utiliser l'instruction dy = accelerometer.get_y()
  • Si la variable dy est plus grande que 600, le point sera sur la 5eme ligne
  • Si la variable dy est plus grande que 300, le point sera sur la 4eme ligne
  • Si la variable dy est plus petit que -600, le point sera sur la 1ère ligne
  • Si la variable dy est plus grande que -300, le point sera sur la 2ème ligne
  • sinon, la carte est à peu près horizontale et le point sera sur la ligne centrale.

Info

La structure en python pour des instructions conditionnelles est la suivante :

if condition1:
    instructions à faire 
elif conditions2:
    instructions à faire 
elif conditions3:
    instructions à faire 
...
else:
    instructions à faire        
si condition1 est vraie:
    instructions à faire 
sinon si condition2 est vraie:
    instructions à faire 
sinon si condition3 est vraie:
    instructions à faire 
...
sinon:
    instructions à faire

Les gestes

La carte micro:bit est capable aussi de détecter différents mouvements ou gestes.
Les gestes reconnus sont les suivants : haut, bas, gauche, droite, face visible, face cachée, chute libre, accélération correspondant à 3, 6 ou 8 fois celle de la chute libre, shake.

Les gestes sont toujours représentés par des chaînes par exemple "up" pour haut.

Vous trouverez ci-dessous les mots clés des différents gestes à écrire entre guillemets que vous pourrez utiliser dans un programme.

Commandes

  • up
  • down
  • left
  • right
  • face up
  • face down
  • free fall
  • shake

Exercice 3

Pour obtenir le geste en cours, utiliser l'instruction geste = accelerometer.current_gesture(). La variable geste prendra pour valeur l'un des gestes nommés énumérés ci-dessus.
1. Prévoir ce que fait le code ci-dessous puis le tester sur votre carte.

from microbit import *

while True:
    geste = accelerometer.current_gesture()
    if geste == "face up":
        display.show(Image.HAPPY)
    else:
        display.show(Image.ANGRY)
2. Pour repérer les différents gestes, reprendre le code précédent et modifier le nom du geste qui fait afficher le visage heureux.