🛠 Bouton poussoir et retour console avec gpiozero
Objetivos
Leer un botón pulsador y controlar un LED desde Python con gpiozero en la Raspberry Pi 3 A+: eventos when_pressed / when_released, pull-up interno, bucle de eventos. gpiozero numera en Broadcom, igual que libgpiod.
Material
- Raspberry Pi 3 A+ con Raspberry Pi OS Bookworm, por SSH (sin Ethernet: red vía WiFi o cable micro-USB en modo gadget)
- Botón pulsador, LED + resistencia de 330 Ω
- Botón: GPIO27 (pin 13) hacia GND (pin 20); LED + 330 Ω: GPIO17 (pin 11) hacia GND (pin 14)
Código completo
#!/usr/bin/env python3
# blink_btn.py — sudo apt install python3-gpiozero
from gpiozero import LED, Button # numérotation Broadcom
from signal import pause
led = LED(17) # GPIO17 = broche physique 11
btn = Button(27, pull_up=True) # GPIO27 = broche 13, repos à l'état haut
def on_press:
print("Bouton pressé — la LED clignote")
led.blink(on_time=0.2, off_time=0.2)
def on_release:
print("Bouton relâché — LED éteinte")
led.off
btn.when_pressed = on_press
btn.when_released = on_release
print("3A+ prêt (4x Cortex-A53 @ 1,4 GHz) — appuyez sur le bouton")
pause # garde la boucle d'événements alive
sudo apt install -y python3-gpiozero
python3 blink_btn.py
Verificación esperada
La consola muestra « 3A+ listo »; a cada pulsación el LED parpadea y se muestra un mensaje; al soltarlo el LED se apaga. Ctrl+C sale correctamente.
Errores frecuentes
- Conectar el botón a 3,3 V en lugar de GND sin entender los pull-up: con
pull_up=Trueel estado de reposo es alto y la pulsación da el estado bajo. - Olvidar
pause: el script termina inmediatamente y el botón nunca reacciona. - Conectar GPIO27 directamente a 5 V: la lógica del 3 A+ es de 3,3 V, los 5 V pueden dañar el SoC.
- Confundir los pines 13 (GPIO27) y 11 (GPIO17) en el conector de 40 pines.
Otros tutoriales para esta placa
- Allumer une LED en C avec libgpiod sur le GPIO 40 broches
- Premier script Python : inventaire du système
- Variation d'intensité d'une LED avec le PWM matériel
- Capteur I2C : température et pression avec BME280
- Connexion WiFi station et administration en SSH
- Démarrage SD/USB et récupération d'une carte qui ne boot plus
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython