🛠 Lire un bouton poussoir et afficher dans la console
Objectifs
Lire l'état d'un bouton poussoir sur le connecteur 40 broches et afficher un message dans la console à chaque appui, avec gpiomon (libgpiod) qui attend les fronts sur une ligne GPIO. On réutilise la broche 7 (GPIO1_D6 = gpiochip1, ligne 30) déjà câblée au tuto LED : retirez la LED avant de commencer.
Matériel
- Orange Pi 5 Plus alimentée (Type-C côté ports Ethernet, 5 V / 4 A)
- 1 bouton poussoir + 1 résistance 10 kΩ (pull-up vers 3,3 V)
- Câbles jumper, accès terminal
- Paquet
gpiodinstallé (sudo apt install -y gpiod)
Code complet
# Attente d'un seul appui (front descendant : repos au niveau haut grâce au pull-up)
sudo gpiomon --num-events=1 --falling-edge gpio1 30
# Boucle complète : un message par appui, anti-rebond 50 ms
while sudo gpiomon --num-events=1 --falling-edge \
--debounce-edge-period 50000000 gpio1 30 >/dev/null; do
echo "Bouton pressé à $(date +%T)"
done
Vérification attendue
gpiomon se bloque puis affiche une ligne du type event: 1 falling edge au premier appui. Avec la boucle, chaque appui imprime « Bouton pressé » avec l'heure ; sans anti-rebond, un appui unique peut déclencher 2 à 5 événements (rebond mécanique du contact).
Erreurs fréquentes
- Pas de résistance de pull-up : la ligne flotte, gpiomon déclenche en continu au moindre bruit. Une résistance de pull-up interne peut être demandée via les options de biais de libgpiod, mais un pull-up externe 10 kΩ est plus robuste pour débuter.
- Front inversé : avec pull-up + bouton vers la masse, l'appui produit un front descendant (
--falling-edge), pas montant. - Mauvaise ligne : broche 7 = ligne 30 de gpiochip1 (GPIO1_D6), pas la ligne 7 ni gpiochip0.
- >
Autres tutoriels pour cette carte
- Allumer une LED via le GPIO 40 broches (libgpiod)
- Premier script Python : fiche signalétique de la carte et LED
- Variation d'intensité d'une LED avec PWM (sysfs pwm)
- Lire un capteur I2C (BMP280) depuis le bus du connecteur
- Exploiter le double Ethernet 2,5 GbE et sécuriser le SSH
- Booter sur NVMe (M.2 PCIe 3.0 x4) et récupérer une carte brique via MaskROM
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash