🛠 Allumer une LED avec un bouton poussoir sur le CM3
Objetivos
Combinar una entrada y una salida GPIO: leer un botón pulsador y encender un LED mientras se mantiene pulsado, con la gestión del rebote mecánico integrada en gpiozero. También aprenderá el papel de las resistencias de pull internas débiles del CM3 (50-65 kΩ, datasheet RP-008161-DS §6), presentes en todos los pines excepto GPIO28/29/44/45.
Material
- CM3 sobre CMIO3, Raspberry Pi OS iniciado, python3-gpiozero instalado
- 1 botón pulsador entre GPIO4 y GND (GPIO4 posee una resistencia de pull-up por defecto)
- 1 LED + resistencia de 330 Ω entre GPIO17 y GND
Código completo
#!/usr/bin/env python3
# bouton_led.py — bouton sur GPIO4 (vers GND), LED sur GPIO17
from gpiozero import Button, LED
from signal import pause
btn = Button(4, pull_up=True, bounce_time=0.05) # rebond ignoré 50 ms
led = LED(17)
btn.when_pressed = led.on
btn.when_released = led.off
pause # boucle d'événements gpiozero (gère le SIGINT)
python3 bouton_led.py
Verificación esperada
Pulsar el botón enciende el LED, soltarlo lo apaga, sin parásitos de parpadeo gracias a bounce_time. Ctrl-C finaliza correctamente el programa. Variante sin conexión: colocar el dedo sobre GPIO4 a veces hace reaccionar la entrada — señal de que el pin está correctamente configurado con una resistencia de pull-up sensible.
Errores frecuentes
- Olvidar
bounce_time: el botón mecánico rebota y desencadena decenas de eventos por pulsación. - Botón en GPIO28/29/44/45 contando con la resistencia de pull interna: estos pines no tienen ninguna resistencia de pull por defecto, la entrada queda flotante y el estado es aleatorio — añadir una resistencia de pull-up externa (10 kΩ hacia VREF del banco).
- Cortocircuito con el botón pulsado: aquí la corriente permanece por debajo de 1 mA gracias a la resistencia de pull interna, pero nunca conectar una salida directamente a GND en modo push-pull.
- Olvidar
pause: sin bucle de eventos, el script finaliza inmediatamente y el LED deja de reaccionar.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash