🛠 Bouton poussoir et messages console
Objetivos
Leer un botón pulsador en el ODROID-C2 y mostrar un mensaje en la consola en cada pulsación, combinando la entrada GPIO (wiring-odroid) y la salida stdout — la base de toda interfaz hombre-máquina.
Material
- ODROID-C2 con Arch Linux ARM (wiring-odroid) o imagen del fabricante
- Botón pulsador, resistencia de 10 kΩ como pull-up hacia 3,3 V (los pines del conector J2 no ofrecen un pull interno garantizado a través de esta API)
- Pin físico 11 como entrada, GND para el botón
- Consola serie uart_AO (115200 8N1) o sesión SSH para ver los mensajes
Código completo
/* bouton.c — gcc bouton.c -lwiringPi -o bouton */
#include <wiringPi.h>
#include <stdio.h>
#include <time.h>
#define BTN 11 /* broche physique 11, bouton vers GND */
int main(void) {
if (wiringPiSetupPhys == -1) { perror("wiringPiSetupPhys"); return 1; }
pinMode(BTN, INPUT); /* pull-up 10k externe vers 3,3 V requis */
int last = HIGH, appuis = 0;
for (;;) {
int etat = digitalRead(BTN);
if (etat == LOW && last == HIGH) {
appuis++;
printf("Appui n%d — bouton actif (niveau bas)\n", appuis);
fflush(stdout);
delay(50); /* anti-rebond logiciel */
}
last = etat;
delay(5);
}
}
Verificación esperada
Cada pulsación muestra una línea «Pulsación n1», «Pulsación n2»… en la consola. Soltar y volver a pulsar cuenta como una nueva pulsación; mantener el botón pulsado no debe repetir el mensaje (antirrebote).
Errores frecuentes
- Olvidar la resistencia de pull-up externa: la entrada queda flotante y los mensajes aparecen en ráfaga.
- Confundir nivel activo bajo (LOW al pulsar) y activo alto.
- Ejecutar sin sudo: el acceso GPIO a través de wiringPi lo requiere según la imagen.
- >
- Antirrebote demasiado corto: pulsaciones únicas cuentan como dos; aumentar delay(50) si es necesario.
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