🛠 Bouton et console série interactive
Objectifs
Lire un bouton poussoir avec une résistance de pull-up interne et piloter la carte depuis la console série : appuyer sur le bouton allume la LED D6, taper « s » dans le moniteur affiche un statut. On découvre digitalRead, INPUT_PULLUP et la lecture non bloquante de Serial.
Matériel
- 1 × Arduino MKR WiFi 1010
- 1 × bouton poussoir
- Câbles jumper : bouton entre D2 et GND (aucune résistance externe nécessaire, pull-up interne)
- Câble micro-USB
Code complet
// Bouton sur D2 (vers GND), LED sur D6, commandes série.
const uint8_t PIN_BTN = 2;
bool ledOn = false;
void setup {
Serial.begin(115200);
pinMode(PIN_BTN, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("MKR WiFi 1010 prete - bouton sur D2, tapez s pour statut");
}
void loop {
static bool etatPrec = HIGH;
bool état = digitalRead(PIN_BTN);
if (état == LOW && etatPrec == HIGH) { // front descendant = appui
ledOn = !ledOn;
digitalWrite(LED_BUILTIN, ledOn);
Serial.println(ledOn ? "LED ON" : "LED OFF");
delay(30); // anti-rebond grossier
}
etatPrec = état;
if (Serial.available) { // commande non bloquante
char c = Serial.read;
if (c == 's' || c == 'S')
Serial.printf("statut: led=%d bouton=%d\n", ledOn, digitalRead(PIN_BTN));
}
}
Vérification attendue
À l'appui du bouton, la LED D6 bascule et un message s'affiche dans le moniteur série (115200 bauds). En tapant s + Entrée, la ligne statut: led=... bouton=... apparaît sans bloquer la boucle. Le bouton est lu à HIGH au repos et LOW quand on appuie : c'est l'effet du pull-up interne.
Erreurs fréquentes
- Bouton câblé vers 3,3 V au lieu de GND : la logique est inversée, préférez le montage pull-up standard décrit ici.
while (!Serial);en setup : sur SAMD, cela bloque indéfiniment si le moniteur n'est jamais ouvert ; à éviter ou à limiter avec un timeout.- Oublier l'anti-rebond : un appui unique déclenche alors plusieurs basculements.
Serial.readsans testeravailablerenvoie -1 et pollue la logique.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
scan-wifi.inoArduinoconnexion-wpa2.inoArduinohttp-get.inoArduinoserveur-web-led.inoArduinohorloge-ntp.inoArduinoudp-diffusion.inoArduino