button_led.py

Raspberry Pi 4 Model B (2019) — Ficha de placa · 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 4 Model B (BCM2711 quad-core a 1,5 GHz, USB-C de 5 V/3 A, doble micro-HDMI, Wi-Fi 5 GHz, GPIO de 40 pines). 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). Raspberry Pi OS Bookworm incluye gpiozero; si no, sudo apt install python3-gpiozero. Usa una fuente USB-C de 5 V/3 A para evitar recortes por bajo voltaje.

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