🛠 Lire un bouton poussoir et afficher dans la console
Objetivos
Leer el estado de un botón pulsador en el conector de 40 pines y mostrar un mensaje en la consola en cada pulsación, con gpiomon (libgpiod), que espera los flancos en una línea GPIO. Reutilizamos el pin 7 (GPIO1_D6 = gpiochip1, línea 30) ya cableado en el tutorial del LED: retire el LED antes de comenzar.
Material
- Orange Pi 5 Plus alimentada (puerto Type-C del lado de los puertos Ethernet, 5 V / 4 A)
- 1 botón pulsador + 1 resistencia de 10 kΩ (pull-up hacia 3,3 V)
- Cables jumper, acceso a terminal
- Paquete
gpiodinstalado (sudo apt install -y gpiod)
Código completo
# 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
Verificación esperada
gpiomon se bloquea y luego muestra una línea del tipo event: 1 falling edge en la primera pulsación. Con el bucle, cada pulsación imprime « Bouton pressé » con la hora; sin antirrebote, una pulsación única puede provocar de 2 a 5 eventos (rebote mecánico del contacto).
Errores frecuentes
- Falta de resistencia de pull-up: la línea queda flotante, gpiomon se dispara continuamente ante el menor ruido. Se puede solicitar una resistencia de pull-up interna mediante las opciones de sesgo de libgpiod, pero un pull-up externo de 10 kΩ es más robusto para principiantes.
- Flanco invertido: con pull-up + botón hacia masa, la pulsación produce un flanco descendente (
--falling-edge), no ascendente. - Línea incorrecta: pin 7 = línea 30 de gpiochip1 (GPIO1_D6), no la línea 7 ni gpiochip0.
- >
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash