🛠 Lire un bouton et afficher dans la console
Objetivos
Configurar un pin del conector de 40 pines como entrada con resistencia pull-up interna, leer un botón pulsador en Python con libgpiod y mostrar cada pulsación en la consola. Esta es la base de toda interacción física con el ODROID-M1.
Material
- ODROID-M1 con Armbian (paquete python3-gpiod)
- 1 botón pulsador (no se necesita resistencia externa: pull-up interno)
- > SIN VERIFICAR: pin exacto a elegir en el conector de 40 pines mediante gpioinfo; el esquema oficial de pines (wiki.odroid.com) no es accesible programáticamente.
Código completo
#!/usr/bin/env python3
"""Compteur d'appuis sur bouton, libgpiod (chip/ligne à adapter)."""
import time
from gpiod import chip, line
CHIP, LIGNE = "gpiochip1", 22 # exemple banque gpio1 du RK3568B2
compteur = 0
with chip(CHIP) as g:
g.request_lines(consumer="bouton", config={
LIGNE: line.RequestConfig(
line=LIGNE, consumer="bouton",
request_type=line.RequestType.INPUT,
bias=line.Bias.PULL_UP),
})
print("En attente d'appuis (Ctrl-C pour quitter)...", flush=True)
while True:
if g.get_value(LIGNE) == 0: # bouton fermé vers la masse
compteur += 1
print(f"Appui n°{compteur}", flush=True)
time.sleep(0.3) # anti-rebond logiciel
time.sleep(0.05)
Verificación esperada
Cada pulsación muestra «Pulsación n.º X» en la consola; soltar el botón no genera nada gracias al pull-up interno.
Errores frecuentes
- Olvidar el pull-up: la entrada queda flotante y muestra pulsaciones fantasma.
- Conectar el botón a 3,3 V en lugar de a masa con pull-up: lógica invertida.
- Antirrebote demasiado corto: una sola pulsación física se cuenta varias veces.
- Línea ya reclamada por otro programa: libgpiod rechaza la solicitud, hay que liberar el otro proceso.
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