🛠 Bouton et console série : Serial (USB) vs Serial1 (broches 0/1)
Objectifs
Lire un bouton poussoir avec digitalRead, afficher des messages dans le moniteur série, et comprendre le piège majeur de la Leonardo lors d'une migration depuis une Uno : ici Serial désigne le port USB (CDC), tandis que l'UART TTL des broches 0 et 1 s'appelle Serial1. Le bouton utilisera la résistance de pull-up interne (20 à 50 kΩ), donc un montage actif-LOW.
Matériel
- 1 Arduino Leonardo + câble micro-USB
- 1 bouton poussoir
- 1 fil reliant une patte du bouton à GND (aucune résistance externe nécessaire grâce au pull-up interne)
Code complet
// Broche 2 = aussi une interruption matérielle (int1) sur Leonardo
const uint8_t BUTTON_PIN = 2;
void setup {
pinMode(BUTTON_PIN, INPUT_PULLUP); // pull-up interne 20-50 kOhm, actif-LOW
Serial.begin(9600); // ATTENTION : sur Leonardo, Serial = USB CDC, PAS les broches 0/1 !
while (!Serial) { /* attend l'ouverture du moniteur */ }
Serial.println("Leonardo prete : appuyez sur le bouton (broche 2).");
}
void loop {
if (digitalRead(BUTTON_PIN) == LOW) { // bouton enfoncé = LOW
Serial.println("Bouton presse !");
delay(200); // anti-rebond logiciel simple
}
}
Vérification attendue
Ouvrez le moniteur série de l'IDE à 9600 bauds : le message d'accueil s'affiche. Chaque appui sur le bouton imprime une ligne. Le while (!Serial) attend que le port USB CDC soit ouvert par l'ordinateur — une spécificité du USB natif de la Leonardo qui n'existe pas sur l'Uno.
Erreurs fréquentes
- Confondre
SerialetSerial1: sur Leonardo, relier un module GPS ou un autre microcontrôleur aux broches 0/1 imposeSerial1.begin(...). ÉcrireSerialcroit parler à l'ordinateur, pas aux broches. - Câblage à l'envers : sans pull-up activé (
INPUT_PULLUP), la broche flotte et le message s'affiche en boucle. - Logique inversée : le montage est actif-LOW ;
HIGHsignifie bouton relâché. - Bogue connue du cœur AVR :
serialEventn'est pas déclenché pour le CDC USB (issue #206) ; préférezSerial.availabledansloop.
Autres tutoriels pour cette carte
- Faire clignoter la LED intégrée (broche 13)
- Lire un capteur analogique : potentiomètre et ADC 10 bits
- Clavier USB : taper du texte avec la bibliothèque Keyboard
- Souris USB : déplacer le curseur avec la bibliothèque Mouse
- Asservir un servo moteur avec un potentiomètre (PWM)
- Programmer aux registres : interruption Timer/Counter1
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino