🛠 Bouton poussoir et console série avec le coprocesseur
Objectifs
Ajouter une entrée numérique au coprocesseur ATmega32U4 de la LattePanda Alpha : un bouton poussoir lu avec une résistance de pull-up interne, une LED qui s'allume en retour, et surtout la liaison série USB interne qui relie l'ATmega32U4 au PC x86 (Core m3-7Y30). C'est la brique de base de toute communication SoC ↔ MCU sur cette carte.
Matériel
- LattePanda Alpha alimentée en 12 V/3 A ou USB-C PD 45 W
- 1 bouton poussoir, 1 LED + résistance 330 Ω
- Câblage : bouton entre D2 et GND (pull-up interne activé, aucune résistance externe nécessaire) ; LED + résistance sur D13 vers GND
- IDE Arduino sur Windows ou Linux ; le moniteur série de l'IDE suffit pour ce tutoriel
Code complet
// BlinkAndButton.ino — téléverser sur le coprocesseur, carte "Arduino Leonardo"
const int LED_PIN = 13; // broche numérique compatible Arduino
const int BTN_PIN = 2; // bouton de D2 vers GND (pull-up interne utilisé)
void setup {
pinMode(LED_PIN, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP);
Serial.begin(9600); // série USB vers le côté x86 (COM sous Windows, /dev/ttyACM* sous Linux)
}
void loop {
digitalWrite(LED_PIN, digitalRead(BTN_PIN) == LOW ? HIGH : LOW);
if (Serial.available) { // laisse le côté PC nous envoyer des caractères
char c = Serial.read;
Serial.print('got:'); Serial.println(c);
}
delay(20);
}
Ouvrez ensuite le moniteur série de l'IDE (9600 bauds) sur le port du coprocesseur pour voir les got:x s'afficher quand vous tapez.
Vérification attendue
Appui sur le bouton → LED allumée ; relâchement → LED éteinte. Le moniteur série du PC x86 affiche got:a pour chaque caractère tapé au clavier côté PC : la liaison série interne USB fonctionne dans les deux sens.
Erreurs fréquentes
- Oublier
INPUT_PULLUPet câbler le bouton vers le 3,3 V/5 V sans résistance externe : l'état lu reste indéfini (broche en l'air). - Logique inversée : avec un pull-up, le bouton pressé donne
LOW, pasHIGH. - Deux programmes ouverts sur le même port série (moniteur IDE + autre script) : le second ne reçoit rien.
- Mauvais débit : le moniteur doit être réglé sur 9600 comme
Serial.begin(9600).
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton.pyPythonservo.pyPythonanalogique.pyPythonrespiration.pyPythonneopixel.pyPython