comment utiliser les deux boutons-poussoirs du micro:bit pour développer des programmes interactifs.
RÉAGIR À L'APPUI SUR UN BOUTON
Le micro:bit possède deux boutons programmables. Le bouton gauche est désigné par button_a et le bouton droit par button_b.
La fonction button_a.is_pressed() envoie True si le bouton gauche est enfoncé au moment de l'appel de la fonction. Il en va de même pour button_b.is pressed().
Ton programme attend dans une boucle infinie que tu appuies sur le bouton A. La LED centrale commence alors à clignoter avec une durée d'allumage et d'extinction de 400 ms chacune, tant que tu maintiens le bouton enfoncé.
Pour mieux structurer ton programme, tu définis une fonction blink() qui allume puis éteint la LED centrale.
Programme:
from microbit import *
def blink():
display.set_pixel(2, 2, 9)
sleep(400)
display.set_pixel(2, 2, 0)
sleep(400)
while True:
if button_a.is_pressed():
blink()
sleep(10)
La commande sleep(10), qui peut sembler superflue, est importante. Elle permet d'éviter de consommer inutilement des ressources du processeur lorsque le programme ne fait rien d'autre que vérifier si le bouton est enfoncé. Dans le langage technique, on dit que l'état du bouton est interrogé périodiquement dans une boucle infinie. Cette technique est appelée polling.
RÉAGIR À UN CLIC SUR UN BOUTON
Comme tu le connais déjà avec les clics de souris, tu souhaites maintenant déclencher une action en cliquant sur un bouton. Pour cela, tu utilises la fonction button_a.was_pressed(). Celle-ci renvoie True si tu as appuyé sur le bouton à un moment donné depuis la dernière vérification. Le clic est considéré comme un événement (event) enregistré par le système. Un clic sur le bouton A affiche un carré sur l'écran. Un clic sur le bouton B éteint toutes les LED.
Programme:
from microbit import *
while True:
if button_a.was_pressed():
display.show(Image.SQUARE)
if button_b.was_pressed():
display.clear()
sleep(10)
Tu peux développer des programmes interactifs qui réagissent soit à un bouton maintenu enfoncé, soit à un clic sur un bouton.
Avec la fonction is_pressed(), le bouton doit être enfoncé au moment de l'appel pour que la fonction renvoie True.
Avec la fonction was_pressed(), la valeur True est renvoyée si le bouton a été pressé à un moment quelconque depuis le démarrage du programme ou depuis le dernier appel de cette fonction.
EXERCICES À RÉSOUDRE
1.
Lorsque tu appuies sur le bouton A, une flèche pointant vers la gauche (ARROW_W) apparaît sur l'écran.
Lorsque tu appuies sur le bouton droit B, une flèche pointant vers la droite (ARROW_E) apparaît.
2.
Programme un compteur de clics : À chaque clic sur le bouton A, le compteur n, initialement égal à 0, augmente de 1. Sa valeur est affichée dans la fenêtre du terminal pour permettre de la contrôler.Lorsque tu cliques sur le bouton B, le nombre total de clics doit apparaître sous forme de texte défilant sur l'écran.
Remarque : La commande scroll() ne peut afficher que du texte. Avec str(n), tu peux convertir un nombre en une chaîne de caractères.
3.
Tu simules le lancer d'un dé avec le micro:bit.
À chaque clic sur le bouton A, l'image d'une face de dé choisie au hasard apparaît sur l'écran.
Remarque : Le plus simple est de créer les différentes faces du dé sous forme d'objets Image. Par exemple, pour représenter la face quatre :
img = Image('00000:09090:00000:09090:00000:')