boutons.py

micro:bit V2 (BBC micro:bit v2) · Fichier : boutons.py · Langage : MicroPython · Usage : Réagir aux boutons A et B (appui court, long, inclinaison)

Le script exploite les deux boutons A/B de la micro:bit : was_pressed pour l'appui court, is_pressed avec running_time pour l'appui long, et la combinaison des deux. Les images intégrées (HAPPY, SAD, HEART) s'affichent sans dessin manuel.

Matériel requis

Une BBC micro:bit V2 (nRF52833, matrice 5×5 LED, boutons A/B, accéléromètre + boussole, microphone et haut-parleur) alimentée par USB ou pile. Aucun composant : boutons A/B intégrés sous la carte.

Câblage

Aucun câblage. Sur boîtier, repérez le côté des boutons : A en haut à gauche, B en haut à droite.

Fonctionnement

was_pressed() renvoie vrai une seule fois par appui (drapeau interne) ; is_pressed() teste l'état instantané ; running_time() mesure les millisecondes depuis le démarrage pour détecter l'appui long.

Exécution

Ouvrez python.microbit.org, collez le programme MicroPython et envoyez-le vers la carte (la micro:bit apparaît comme lecteur MICROBIT). Appuyez sur reset pour relancer.

Variantes

Utilisez accelerometer.is_gesture(SHAKE) comme troisième bouton sans pièce, ou accelérez avec button_a.get_presses() pour compter les appuis.

boutons.py

# Boutons A et B : appui court, appui long, combinaison des deux.
from microbit import *

display.show(Image.HAPPY)

while True:
    if button_a.was_pressed():
        display.show(Image.HAPPY)
        print('A presse')
    if button_b.was_pressed():
        display.show(Image.SAD)
        print('B presse')

    # Appui long (maintenu plus de 500 ms) sur A : coeur.
    if button_a.is_pressed():
        t0 = running_time()
        while button_a.is_pressed():
            if running_time() - t0 > 500:
                display.show(Image.HEART)
                sleep(300)
                break

    # Les deux boutons : affichage du compteur de boussole.
    if button_a.is_pressed() and button_b.is_pressed():
        display.scroll(str(accelerometer.get_steps()))
        button_a.wait_until_released()
    sleep(10)

← Retour à la fiche