🛠 Bouton poussoir et lecture d'état
Objetivos
Leer el estado de un botón pulsador en Linux mainline con libgpiod (Python) y encender un LED en respuesta. También descubrirás la consola serie ttySAC2, preciosa cuando la tarjeta no arranca — solo a 1,8 V.
Material
- ODROID-XU4 con Armbian (kernel 6.6.x)
- 1 botón pulsador + 1 LED + resistencia de 330 Ω
- Paquete
python3-gpiod(sudo apt install python3-gpiod lgpio) - Opcional: adaptador serie USB-TTL de 1,8 V para la consola
Código completo
#!/usr/bin/env python3
"""button.py — allume une LED quand le bouton (vers GND) est presse."""
from gpiod import chip, LineFlags
import time
c = chip("gpiochip0") # gpiodetect liste les puces exynos pinctrl
btn = c.get_line("gpio-XX") # remplacer XX : une entree du header
btn.request(consumer="demo", type=LineFlags.REQUEST_FLAGS_INPUT)
led = c.get_line("gpio-YY") # remplacer YY : une broche sortie
led.request(consumer="demo", type=LineFlags.REQUEST_FLAGS_OUTPUT)
print("appui bouton (vers GND), Ctrl-C pour quitter")
while True:
led.set_value(1 if btn.get_value else 0)
time.sleep(0.05)
Verificación esperada
python3 button.py y luego pulsa el botón: el LED se enciende mientras se mantiene pulsado. gpioinfo gpiochip0 muestra las dos líneas solicitadas por el consumidor «demo». En caso de problema, la consola serie ttySAC2 (115200 baudios) muestra los mensajes del kernel.
Errores frecuentes
- Conectar un adaptador UART de 5 V al header serie: la consola es de 1,8 V sin protección, se han destruido tarjetas así — usa solo material de 1,8 V.
- Número de pin incorrecto: los nombres
gpio-XXdependen del controlador Exynos, nunca los de una Raspberry Pi; verifica congpioinfo. - Olvidar las resistencias de pull: sin pull-up, la entrada queda flotante y el estado cambia solo.
- Confundir
gpiochip0con los otros chips listados porgpiodetect.
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