button_led.py

Raspberry Pi 5 (model-5) · Archivo : button_led.py · Lenguaje : Python · Uso : Lire un bouton poussoir et réagir par événement (callback gpiozero)

Un pulsador en GPIO27 controla un LED en GPIO17: los callbacks when_pressed/when_released de gpiozero evitan el polling. El rebote se filtra con bounce_time=0,05 s. Buen punto de partida para una interfaz local, teniendo en cuenta el conector de 40 pines.

Hardware

Una Raspberry Pi 5 (BCM2712 quad-core a 2,4 GHz, chip de E/S RP1, GPIO de 40 pines, alimentación USB-C de 5 V/5 A recomendada, dos puertos CSI de cámara). Un pulsador, un LED, una resistencia de 330 ohmios, cables dupont.

Cableado

Una pata del pulsador a GPIO27 (pin 13), la otra a GND; la resistencia de pull-up es interna (pull_up=True). LED en GPIO17.

Funcionamiento

gpiozero activa la pull-up interna; al pulsar se une el pin a GND y se dispara el callback. pause() mantiene vivo el bucle de eventos.

Ejecución

Copia el script en la placa (scp) y ejecútalo con python3. En Bookworm, gpiozero 2.x controla los pines mediante el chip RP1; mantén gpiozero y python3-rpi.gpio actualizados (sudo apt full-upgrade). Se recomienda fuente de 5 V/5 A.

Variantes

btn.wait_for_press() para lectura bloqueante; hold_time detecta pulsaciones largas. Verifique el pin en el esquema oficial de J8.

button_led.py

# button_led.py — allume une LED quand on appuie sur un bouton.
# Deps: sudo apt install python3-gpiozero
# Cablage : bouton entre GPIO27 et GND, pas de resistance externe (pull-up interne).
from gpiozero import LED, Button
from signal import pause

led = LED(17)      # GPIO17, broche 11
btn = Button(27, pull_up=True, bounce_time=0.05)  # GPIO27, broche 13

def on_press():
    print("Bouton presse")
    led.on()

def on_release():
    led.off()

btn.when_pressed = on_press
btn.when_released = on_release
print("Appuyez sur le bouton, Ctrl+C pour sortir")
pause()

← Volver a la ficha