boutons.py

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

El script explota los dos botones A/B: was_pressed para pulsación corta, is_pressed con running_time para pulsación larga y la combinación de ambos. Las imágenes integradas (HAPPY, SAD, HEART) se muestran sin dibujar.

Material necesario

Una BBC micro:bit V2 (nRF52833, matriz LED 5×5, botones A/B, acelerómetro + brújula, micrófono y altavoz) alimentada por USB o pila. Sin componentes: los botones A/B están integrados bajo la placa.

Cableado

Sin cableado. Con carcasa, localiza el lado de los botones: A arriba a la izquierda, B arriba a la derecha.

Funcionamiento

was_pressed() devuelve verdadero una sola vez por pulsación (flag interno); is_pressed() prueba el estado instantáneo; running_time() mide milisegundos desde el arranque para detectar la pulsación larga.

Ejecución

Abre python.microbit.org, pega el programa MicroPython y envíalo a la placa (la micro:bit aparece como unidad MICROBIT). Pulsa reset para relanzar.

Variantes

Usa accelerometer.is_gesture(SHAKE) como tercer botón sin piezas, o cuenta pulsaciones con button_a.get_presses().

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)

← Volver a la ficha