bouton-interruption.py

Raspberry Pi Pico 2 · Archivo : bouton-interruption.py · Lenguaje : Python · Uso : Basculer une LED sur appui bouton avec interruption matérielle

El botón cableado a GP15 alterna el LED mediante una interrupción hardware (irq): no se pierde ningún ciclo de CPU escrutando el pin. Un filtro de 50 ms dentro del handler elimina los rebotes mecánicos del contacto.

Hardware

Una Raspberry Pi Pico 2 (RP2350 doble Cortex-M33 @ 150 MHz) con MicroPython instalado, alimentada por USB. 1 botón pulsador (una pata a GP15, la otra a GND).

Cableado

Botón entre GP15 y GND; la resistencia de pull-up la activa Pin.PULL_UP en la placa.

Funcionamiento

BTN.irq se dispara con el flanco de bajada (pulsación a masa). El handler compara time.ticks_ms() con el último flanco, ignora rebotes de menos de 50 ms e invierte el estado del LED.

Ejecución

Instala la versión MicroPython « Pico 2 » (mantén BOOTSEL, conecta el USB, suelta el .uf2) y copia el script vía Thonny. Arranque automático con el nombre main.py.

Variantes

Cambia el disparo a Pin.IRQ_RISING | Pin.IRQ_FALLING para contar todos los flancos, o apila varios botones con un handler por pin.

bouton-interruption.py

# Bascule LED sur appui bouton : interruption materielle + anti-rebond.
from machine import Pin
import time

BTN = Pin(15, Pin.IN, Pin.PULL_UP)  # bouton vers GND
LED = Pin(25, Pin.OUT)

etat_led = [0]           # liste mutable : modifiable dans le handler
dernier = [0]            # horodatage du dernier front valide

def sur_appui(pin):
    maintenant = time.ticks_ms()
    # Anti-rebond : on ignore les fronts de moins de 50 ms apres le dernier.
    if time.ticks_diff(maintenant, dernier[0]) < 50:
        return
    dernier[0] = maintenant
    etat_led[0] = 1 - etat_led[0]
    LED.value(etat_led[0])
    print("Appui -> LED", "ON" if etat_led[0] else "OFF")

BTN.irq(trigger=Pin.IRQ_FALLING, handler=sur_appui)
print("Pret : appuyez sur le bouton (GP15)")

while True:
    time.sleep_ms(100)   # le handler s'execute en interruption

← Volver a la ficha