🛠 Bouton poussoir et console série
Objectifs
Lire un bouton poussoir sur une broche digitale de la MKR WAN 1310, compter les appuis et les afficher sur la console série via l'USB natif du SAMD21. Rappels : 8 broches digitales 3,3 V, 8 interruptions externes (0, 1, 4, 5, 6, 7, 8, 16/A1, 17/A2), 7 mA max par broche.
Matériel
- 1 carte MKR WAN 1310
- 1 bouton poussoir
- Fils : bouton entre la broche 1 et GND (la résistance de tirage est interne)
Code complet
// Bouton sur broche 1 + console série — MKR WAN 1310
const int BUTTON = 1; // broche compatible EINT pour un réveil future
const int LED = 6; // LED_BUILTIN
unsigned long appuis = 0;
unsigned long dernierAppui = 0;
void setup {
pinMode(BUTTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(115200);
while (!Serial);
Serial.println("Appuyez sur le bouton (broche 1 -> GND)");
}
void loop {
if (digitalRead(BUTTON) == LOW) { // actif bas : tirage interne
unsigned long maintenant = millis;
if (maintenant - dernierAppui > 50) { // anti-rebond logiciel 50 ms
appuis++;
dernierAppui = maintenant;
Serial.print("Appui n°");
Serial.println(appuis);
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
}
Vérification attendue
Chaque appui affiche « Appui n°X » dans le moniteur série (115200 bauds) et allume D6. Le compteur n'augmente pas de plusieurs crans d'un seul appui grâce à l'anti-rebond.
Erreurs fréquentes
- Câbler le bouton vers 3,3 V alors que le code utilise
INPUT_PULLUP(actif bas) : le signal reste alors à l'état bas en permanence. - Oublier l'anti-rebond et voir le compteur bondir de 3 à 10 à chaque appui.
- Attendre une LED ON en alimentation sur batterie : elle suit le 5 V USB/VIN, pas la batterie Li-Po chargée par le BQ24195L.
- Ne pas sélectionner la carte MKR WAN 1310 dans l'IDE : le port série disparaît pendant le téléversement (reset 1200 bauds), c'est normal.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
join-otaa.inoArduinouplink-confirme.inoArduinodownlink.inoArduinoactivation-abp.inoArduinosuivi-adr.inoArduinoclasse-c.inoArduino