Simón: Botones y notas
Parte de la sección Proyectos del Journey de Arduino de Coddy. Lección 13 de 24.
Simon es un juego de memoria: el tablero reproduce un patrón de luces de colores y notas, y tú lo repites con los botones. En cada ronda, el patrón crece en uno, hasta que cometes un error. Hay cuatro colores, cada uno con un botón, un LED y una nota.
Con cuatro elementos de cada tipo, los arrays mantienen el sketch corto. La entrada 0 de cada array es roja, la 1 es verde, la 2 es azul y la 3 es amarilla, así que un número, i, identifica un color en todas partes:
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};Un bucle for comprueba los cuatro botones. Actúa en dos momentos: cuando un botón baja (LOW ahora, HIGH la última vez) y cuando vuelve a subir (HIGH ahora, LOW la última vez). El array lastState guarda la última lectura de cada botón. En pasos posteriores, se cuenta una pulsación cuando el botón vuelve a subir. Estos botones no rebotan, así que basta con comprobar los flancos.
Desafío
IntermedioHaz que los cuatro colores suenen:
- en
setup(), un bucleforconfigura los pines de los LED como salidas y los pines de los botones conINPUT_PULLUP - cuando se presiona el botón
i, enciendeledPins[i]y reproducenotes[i]en el pin 8 - cuando se suelta, apaga el LED y llama a
noTone()
Presiona Run, juega con los botones y después Check.
Pruébalo tú mismo
// Una entrada por color: rojo, verde, azul, amarillo
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C, E, G y C agudo
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // la última lectura de cada botón
void setup() {
// Los LEDs son salidas; los botones usan INPUT_PULLUP
}
void loop() {
// Para cada botón: cuando se pulsa, enciende su LED y reproduce su nota;
// cuando se suelta, apaga ambos
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Proyectos
Practica por tu cuenta: Playground de Arduino