🛠 Les 4 boutons du pavé comme sélecteurs de couleur
Objectifs
Apprendre à lire les entrées numériques de l'Esplora : les quatre boutons poussoirs disposés en losange (SWITCH_UP, SWITCH_DOWN, SWITCH_LEFT, SWITCH_RIGHT) plus le bouton central du joystick. Chaque bouton allumera une couleur différente de la LED RVB. Vous découvrirez au passage le piège propre à la carte : ces boutons sont lus via un multiplexeur analogique, pas directement sur des broches GPIO.
Matériel
- Une Arduino Esplora et son câble micro-USB.
- Arduino IDE 2.x avec le core
arduino:avret la bibliothèque Esplora. - Aucun composant externe : tout est embarqué.
Code complet
/* Chaque bouton du losange allume une couleur de la LED RVB.
Les boutons ne sont pas sur des broches dédiées : la bibliothèque
les lit sur un multiplexeur analogique (A0-A3 en adresse, A4 en ADC). */
#include <Esplora.h>
void setup {
Serial.begin(9600); // pour observer l'état des boutons
}
void loop {
if (Esplora.readButton(SWITCH_UP) == PRESSED) {
Esplora.writeRGB(255, 0, 0); // haut = rouge
Serial.println("UP");
} else if (Esplora.readButton(SWITCH_DOWN) == PRESSED) {
Esplora.writeRGB(0, 255, 0); // bas = vert
Serial.println("DOWN");
} else if (Esplora.readButton(SWITCH_LEFT) == PRESSED) {
Esplora.writeRGB(0, 0, 255); // gauche = bleu
Serial.println("LEFT");
} else if (Esplora.readButton(SWITCH_RIGHT) == PRESSED) {
Esplora.writeRGB(255, 255, 0); // droite = jaune
Serial.println("RIGHT");
} else {
Esplora.writeRGB(0, 0, 0); // aucun bouton = éteinte
}
delay(50);
}
Vérification attendue
Appuyez sur chaque bouton : la LED prend la couleur correspondante et le moniteur série (9600 bauds) affiche le nom du bouton. Relâchez : la LED s'éteint. Testez aussi le bouton central du joystick avec Esplora.readButton(SWITCH_JOYSTICK) — attention, contrairement aux quatre boutons du losange, il ne possède pas de résistance de pull-up matérielle ; la bibliothèque compense en activant un pull-up logiciel au moment de la lecture de ce canal.
Erreurs fréquentes
- Confondre PRESSED et HIGH :
readButtonrenvoiePRESSED(circuit logique interne + multiplexage), jamais un simpleHIGHdedigitalRead. - Vouloir lire deux boutons « en même temps » : les canaux multiplexés partagent un seul convertisseur analogique-numérique ; la lecture est séquentielle avec temps d'établissement. Enchaîner les
readButtondans laloopest prévu pour ça, mais ne bricolez pas d'interruptions dessus. - Bouton du joystick capricieux : sans le correctif de la bibliothèque (pull-up logiciel), il flotte et déclenche seul — n'utilisez jamais
digitalReadsur la broche commune A4 pour ce bouton. - Oublier le
delay(50): sans petite temporisation, vous saturez le moniteur série de lignes ; le multiplexage a aussi besoin de ce temps entre deux changements de canal.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
joystick-couleur.inoArduinojeu-boutons.inoArduinoslider-luminosite.inoArduinothermometre-couleur.inoArduinosonometre.inoArduinoaccelerometre-tilt.inoArduino