🛠 Lire un bouton poussoir dans la console
Objetivos
Conectar un botón pulsador al conector de 40 pines del ODROID-C4 y mostrar cada pulsación en la consola mediante gpiomon (libgpiod). Comprenderá la correspondencia entre el pin físico y la línea GPIO (PIN_13 = GPIOX_4, línea 4 del chip gpio), la ventaja de la resistencia de pull-up interna y la regla de oro: toda la lógica del conector funciona a 3,3 V.
Material
- ODROID-C4 con Armbian current (mainline)
- 1 botón pulsador (contacto momentáneo NA)
- Cables jumper Macho-Hembra
- No se necesita ninguna resistencia externa: la pull-up es por software
sudo apt install -y gpiodsi libgpiod no está instalado
Código completo
#!/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
Verificación esperada
Cada pulsación imprime una línea de evento con marca de tiempo (event: event=falling edge), y cada liberación una línea rising edge. Mientras no pulse, el comando permanece bloqueado silenciosamente: es normal, gpiomon espera en un poll. Con gpioget gpio 4 sin pulsar, debe leer 1 (pull-up interna).
Errores frecuentes
- Equivocarse de chip: GPIOX_4 está en el chip
gpio(línea 4), no engpio_ao, reservado para los pines always-on. - Olvidar
--bias=pull-up: sin ella, la entrada queda flotante y provoca pulsaciones fantasma. - Conectar el pin a 5 V: todos los E/S del conector son de 3,3 V; los 5 V pueden dañar el SoC Amlogic S905X3.
- Interpretar un rebote mecánico como varias pulsaciones: añada un retardo (
sleep 0.05) o filtre en el script. - >
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash