🛠 Lire un bouton poussoir et afficher l'état dans la console
Objetivos
Conectar un botón pulsador al conector de 40 pines de la Orange Pi 3B, leer su estado desde la línea de comandos con gpioget y mostrar cada cambio de estado en la consola.
Material
- Orange Pi 3B con Armbian, fuente de alimentación de 5 V / 3 A
- 1 botón pulsador, 1 resistencia de 10 kΩ (pull-up hacia 3,3 V), cables Dupont
- Paquete
gpiodinstalado (sudo apt install gpiod)
Código completo
# 1. Lecture ponctuelle de la broche (gpioget la configure en entrée)
sudo gpioget -c gpio1 35 # 0 ou 1 selon l'état du bouton
# 2. Journal des appuis dans la console
#!/bin/bash
# fichier : bouton.sh -> bash bouton.sh
CHIP=1
PIN=35 # gpio1_b3 en exemple : vérifier une broche libre sur le plan officiel
dernier=""
while true; do
etat=$(sudo gpioget -c gpio$CHIP $PIN)
if [ "$etat" != "$dernier" ]; then
echo "$(date +%T) - bouton = $etat"
dernier=$etat
fi
sleep 0.05
done
Verificación esperada
En reposo, gpioget devuelve 1 (pull-up hacia 3,3 V); al pulsar el botón, devuelve 0. El script muestra una línea con marca de tiempo en cada cambio de estado, tanto al pulsar como al soltar.
Errores frecuentes
- Olvidar la resistencia de pull y dejar el pin flotando: el estado mostrará entonces valores aleatorios. El pull interno de libgpiod (bias) también funciona, pero el pull por hardware es más didáctico.
- Elegir un pin ya ocupado (UART, o el I2C de los pines 3/5 del conector).
- Confundir el 0 lógico con el botón pulsado: con pull-up + botón hacia masa, la lógica es activa-baja (invertida).
- Ejecutar el script sin
sudo: las líneas GPIO están reservadas al grupo gpio si udev no está configurado. - Rebote mecánico: una pulsación puede producir varias líneas; filtre con
sleep 0.05o un antirrebote por software.
Otros tutoriales para esta placa
- Faire clignoter une LED via le GPIO avec libgpiod
- Premier script Python : bouton + LED avec python3-libgpiod
- Variation d'intensité d'une LED avec un signal PWM
- Interroger un capteur I2C sur les broches 3/5 du connecteur
- Configurer Ethernet gigabit et Wi-Fi puis se connecter en SSH
- Booter sur un SSD NVMe et récupérer une carte bloquée (MaskROM)
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash