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 Model B+ (BCM2835, conector GPIO de 40 pines, alimentación micro-USB, audio de 3,5 mm 4 polos). 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 (o bash). Instala gpiozero con sudo apt install python3-gpiozero si falta. El brochage de 40 pines está en el esquema oficial y en la web de Raspberry Pi.
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()