🛠 Bouton poussoir et messages console
Objectifs
Lire un bouton poussoir sur l'ODROID-C2 et afficher un message sur la console à chaque appui, en combinant l'entrée GPIO (wiring-odroid) et la sortie stdout — la base de toute interface homme-machine.
Matériel
- ODROID-C2 sous Arch Linux ARM (wiring-odroid) ou image vendor
- Bouton poussoir, résistance 10 kΩ en pull-up vers 3,3 V (les broches du connecteur J2 n'offrent pas de pull interne garanti via cette API)
- Broche physique 11 en entrée, GND pour le bouton
- Console série uart_AO (115200 8N1) ou session SSH pour voir les messages
Code complet
/* 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 état = digitalRead(BTN);
if (état == LOW && last == HIGH) {
appuis++;
printf("Appui n%d — bouton actif (niveau bas)\n", appuis);
fflush(stdout);
delay(50); /* anti-rebond logiciel */
}
last = état;
delay(5);
}
}
Vérification attendue
Chaque appui affiche une ligne « Appui n1 », « Appui n2 »… sur la console. Relâcher puis appuyer de nouveau compte un nouvel appui ; maintenir le bouton appuyé ne doit pas répéter le message (anti-rebond).
Erreurs fréquentes
- Oublier la résistance de pull-up externe : l'entrée flotte et les messages apparaissent en rafale.
- Confondre niveau actif bas (LOW quand on appuie) et actif haut.
- Lancer sans sudo : l'accès GPIO via wiringPi en a besoin selon l'image.
- >
- Anti-rebond trop court : des appuis uniques comptent double ; augmenter delay(50) si besoin.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash