🛠 Lire un bouton poussoir dans la console
Objectifs
Câbler un bouton poussoir sur le connecteur 40 broches de l'ODROID-C4 et afficher chaque appui dans la console grâce à gpiomon (libgpiod). Vous comprendrez la correspondance broche physique vers ligne GPIO (PIN_13 = GPIOX_4, ligne 4 du chip gpio), l'intérêt de la résistance de pull-up interne, et la règle d'or : toute la logique du connecteur est en 3,3 V.
Matériel
- ODROID-C4 sous Armbian current (mainline)
- 1 bouton poussoir (contacteur momentané NO)
- Fils jumper Mâle-Femelle
- Aucune résistance externe nécessaire : la pull-up est logicielle
sudo apt install -y gpiodsi libgpiod n'est pas présent
Code complet
#!/usr/bin/env bash
# Câblage : bouton entre PIN_13 (GPIOX_4, chip "gpio", ligne 4)
# et PIN_14 (GND). Jamais de signal 5 V : logique 3,3 V max.
# pull-up interne activée -> état au repos = 1, appui = 0.
# Événements montants (relâchement) et descendants (appui) :
sudo gpiomon --num-events=20 --rising-edge --falling-edge --bias=pull-up gpio 4
# Variante script : réagir à un seul appui puis afficher un message
while sudo gpiomon --num-events=1 --falling-edge --bias=pull-up gpio 4 ; do
echo "Appui détecté à $(date +%T)"
done
Vérification attendue
Chaque appui imprime une ligne d'événement avec horodatage (event: event=falling edge), chaque relâchement une ligne rising edge. Tant que vous n'appuyez pas, la commande reste bloquée silencieusement : c'est normal, gpiomon attend sur un poll. Avec gpioget gpio 4 sans appuyer, vous devez lire 1 (pull-up interne).
Erreurs fréquentes
- Se tromper de chip : GPIOX_4 est sur le chip
gpio(ligne 4), pas surgpio_aoréservé aux broches always-on. - Oublier
--bias=pull-up: sans elle, l'entrée flotte et déclenche des appuis fantômes. - Relier la broche au 5 V : tous les I/O du connecteur sont en 3,3 V, le 5 V peut endommager le SoC Amlogic S905X3.
- Interpréter un rebond mécanique comme plusieurs appuis : ajoutez un délai (
sleep 0.05) ou filtrez côté script. - >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash