🛠 Bouton utilisateur et console série USB
Objectifs
Lire l'état du bouton USER de la Feather nRF52840 et l'afficher sur la console série USB. Le nRF52840 possède un contrôleur USB natif : le Serial du core Arduino est un CDC-TinyUSB, il n'y a pas de puce série externe. Vous apprendrez aussi l'anti-rebond logiciel (millis) et l'attente non bloquante.
Matériel
- 1× Adafruit Feather nRF52840 Express
- 1× câble micro-USB à données
- Arduino IDE avec le core Adafruit nRF52 Boards
Code complet
// nrf52840-bouton-console-uart.ino
const uint8_t BUTTON_PIN = 9; // bouton USER (alias D9)
// >
// sa broche exacte (D9 vient d'exemples CircuitPython) ; vérifier au multimètre
// ou avec le schéma officiel si rien ne se passe.
uint8_t lastState = HIGH;
uint32_t lastDebounce = 0;
uint32_t pressCount = 0;
void setup {
Serial.begin(115200); // console USB CDC native
pinMode(BUTTON_PIN, INPUT_PULLUP); // le bouton USER relie la broche à GND
Serial.println("Console Feather nRF52840 prete");
}
void loop {
uint8_t state = digitalRead(BUTTON_PIN);
uint32_t now = millis;
if (state != lastState && (now - lastDebounce) > 30) {
lastDebounce = now;
lastState = state;
if (state == LOW) {
pressCount++;
Serial.print("Appui n°");
Serial.println(pressCount);
}
}
if (Serial.available) { // echo de la console vers la carte
char c = Serial.read;
Serial.print("Recu: ");
Serial.println(c);
}
}
Vérification attendue
Ouvrez le moniteur série à 115200 : chaque appui sur le bouton USER affiche « Appui n°N » sans rebond parasite (pas de doublons à 1 ms d'écart). Une lettre tapée dans la console est renvoyée en écho.
Erreurs fréquentes
INPUTsans pull-up : la broche flotte et la console se remplit de faux appuis — utilisezINPUT_PULLUP.- Anti-rebond avec
delay(30): vous ratez les appuis suivants ; comparez avecmilliscomme ci-dessus. - Broche USER erronée : si rien ne réagit, testez D9 et les broches voisines, la référence exacte n'est pas confirmée dans la doc.
- Moniteur fermé pendant le téléversement : sur CDC natif, fermez le moniteur si le port est occupé.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython