🛠 Lire un bouton et afficher dans la console
Objectifs
Configurer une broche du connecteur 40 broches en entrée avec pull-up interne, lire un bouton-poussoir en Python avec libgpiod et afficher chaque appui dans la console. C'est la base de toute interaction physique avec l'ODROID-M1.
Matériel
- ODROID-M1 sous Armbian (paquet python3-gpiod)
- 1 bouton-poussoir (aucune résistance externe nécessaire : pull-up interne)
- >
Code complet
#!/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)
Vérification attendue
Chaque appui affiche « Appui n°X » dans la console ; relâcher le bouton ne génère rien grâce au pull-up interne.
Erreurs fréquentes
- Oublier le pull-up : l'entrée flotte et affiche des appuis fantômes.
- Câbler le bouton vers le 3,3 V au lieu de la masse avec pull-up : logique inversée.
- Anti-rebond trop court : un seul appui physique compte plusieurs fois.
- Ligne déjà réclamée par un autre programme : libgpiod refuse la requête, il faut libérer l'autre processus.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash