🛠 Bouton poussoir et lecture d'état
Objectifs
Lire l'état d'un bouton poussoir sous Linux mainline avec libgpiod (Python) et allumer une LED en réaction. Vous découvrirez aussi la console série ttySAC2, précieuse quand la carte ne démarre plus — en 1,8 V uniquement.
Matériel
- ODROID-XU4 sous Armbian (kernel 6.6.x)
- 1 bouton poussoir + 1 LED + résistance 330 Ω
- Paquet
python3-gpiod(sudo apt install python3-gpiod lgpio) - Optionnel : adaptateur série USB-TTL 1,8 V pour la console
Code complet
#!/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 entrée 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)
Vérification attendue
python3 button.py puis appui sur le bouton : la LED s'allume pendant l'appui. gpioinfo gpiochip0 montre les deux lignes demandées par le consumer « demo ». En cas de souci, la console série ttySAC2 (115200 bauds) affiche les messages du noyau.
Erreurs fréquentes
- Brancher un adaptateur UART 5 V sur le header série : la console est en 1,8 V sans protection, des cartes ont été détruites ainsi — n'utiliser que du matériel 1,8 V.
- Mauvais numéro de broche : les noms
gpio-XXdépendent du contrôleur Exynos, jamais ceux d'un Raspberry Pi ; vérifier avecgpioinfo. - Oublier les résistances de pull : sans pull-up, l'entrée flotte et l'état change tout seul.
- Confondre
gpiochip0et les autres puces listées pargpiodetect.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash