Menu
CoddyTech

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.

challenge icon

Desafío

Intermedio

Haz que los cuatro colores suenen:

  • en setup(), un bucle for configura los pines de los LED como salidas y los pines de los botones con INPUT_PULLUP
  • cuando se presiona el botón i, enciende ledPins[i] y reproduce notes[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

}
quiz iconPonte a prueba

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