🛠 Bouton poussoir et console série
Objectifs
Lire une entrée numérique avec un bouton poussoir, gérer le rebond logiciel et dialoguer avec la console série via l'USB natif du SAMD21 (Full-Speed, VID 0x2341, PID applicatif 0x0053).
Matériel
- 1 Arduino MKR WAN 1300
- 1 bouton poussoir
- 1 résistance 10 kΩ (ou tirage interne)
- Câble micro-USB
Code complet
// Logique 3,3 V, max ~7 mA par broche (famille MKR).
const uint8_t BTN = 2;
volatile uint32_t appuis = 0;
void onBouton { appuis++; }
void setup {
Serial.begin(115200);
while (!Serial) {} // attend l'ouverture du moniteur
pinMode(BTN, INPUT_PULLUP); // bouton vers GND
attachInterrupt(digitalPinToInterrupt(BTN), onBouton, FALLING);
}
void loop {
static uint32_t dernier = 0;
if (millis - dernier > 500) {
dernier = millis;
Serial.print("état=");
Serial.print(digitalRead(BTN) ? "relache" : "APPUIE");
Serial.print(" appuis=");
Serial.println(appuis);
}
delay(5);
}
Vérification attendue
Chaque appui incrémente le compteur ; l'état change sur la ligne affichée deux fois par seconde. « while (!Serial) » évite de perdre les premières lignes.
Erreurs fréquentes
- Bouton vers 3,3 V sans résistance : court-circuit ou état flottant ; préférer INPUT_PULLUP vers GND.
- Rebonds : plusieurs incréments par appui, ajouter un anti-rebond (millis) ou un condensateur 100 nF.
- Oublier « while (!Serial) » sur USB natif : premières lignes perdues.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
emission-p2p.inoArduinoreception-p2p.inoArduinoreglage-sp.inoArduinometeo-lora.inoArduinotrame-crc.inoArduinorelais-radio.inoArduino