button_led.py
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()