🛠 Les 4 boutons du pavé comme sélecteurs de couleur
Objetivos
Aprender a leer las entradas digitales de la Esplora: los cuatro botones pulsadores dispuestos en rombo (SWITCH_UP, SWITCH_DOWN, SWITCH_LEFT, SWITCH_RIGHT) más el botón central del joystick. Cada botón encenderá un color diferente del LED RGB. Descubrirás de paso la peculiaridad de la placa: estos botones se leen a través de un multiplexor analógico, no directamente en pines GPIO.
Material
- Una Arduino Esplora y su cable micro-USB.
- Arduino IDE 2.x con el core
arduino:avry la biblioteca Esplora. - Ningún componente externo: todo está integrado.
Código completo
/* 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);
}
Verificación esperada
Pulsa cada botón: el LED toma el color correspondiente y el monitor serie (9600 baudios) muestra el nombre del botón. Suelta: el LED se apaga. Prueba también el botón central del joystick con Esplora.readButton(SWITCH_JOYSTICK) — atención, a diferencia de los cuatro botones del rombo, no posee una resistencia de pull-up física; la biblioteca lo compensa activando un pull-up de software en el momento de la lectura de ese canal.
Errores frecuentes
- Confundir PRESSED y HIGH:
readButtondevuelvePRESSED(lógica interna + multiplexación), nunca un simpleHIGHdedigitalRead. - Querer leer dos botones «al mismo tiempo»: los canales multiplexados comparten un único convertidor analógico-digital; la lectura es secuencial con tiempo de establecimiento. Encadenar las llamadas a
readButtonen elloopestá previsto para esto, pero no intentes usar interrupciones para ello. - Botón del joystick caprichoso: sin la corrección de la biblioteca (pull-up de software), queda flotante y se activa solo — nunca uses
digitalReaden el pin común A4 para este botón. - Olvidar el
delay(50): sin una pequeña temporización, saturarás el monitor serie de líneas; la multiplexación también necesita este tiempo entre dos cambios de canal.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
joystick-couleur.inoArduinojeu-boutons.inoArduinoslider-luminosite.inoArduinothermometre-couleur.inoArduinosonometre.inoArduinoaccelerometre-tilt.inoArduino