Paso 2: código
Puede descargar el sourcode completo en la parte inferior de este paso.
Más información, al principio de nuestro código que comenzamos definiendo nuestras variables globales y números PIN de nuestro arduino.
// LED pin definitions<br>#define LED_RED 11 #define LED_GREEN 9 #define LED_BLUE 7 #define LED_YELLOW 5 #define LED_CORRECT 4 #define LED_WRONG 2
// Button pin definitions #define BUTTON_RED 12 #define BUTTON_GREEN 10 #define BUTTON_BLUE 8 #define BUTTON_YELLOW 6
// Buzzer definitions #define BUZZER 3 #define RED_TONE 220 #define GREEN_TONE 262 #define BLUE_TONE 330 #define YELLOW_TONE 392 #define TONE_DURATION 250
// Game Variables int GAME_SPEED = 250; int GAME_STATUS = 0; int const GAME_MAX_SEQUENCE = 50; int GAME_SEQUENCE[GAME_MAX_SEQUENCE]; int GAME_STEP = 0; int READ_STEP = 0;
Entonces definimos la función de configuración donde montamos nuestros modos de pines del Arduino a la salida para nuestro LED y INPUT_PULLUP para nuestros pulsadores. También utilizamos un randomSeed para asegurarse de que nuestra secuencia de randmon que estamos creando es diferente cada vez. Leer más sobre randomSeed y pseudo al azar numbergenerators aquí: Arduino.cc/RandmomSeed
void setup(){<br> Serial.begin(9600); randomSeed(analogRead(0)); pinMode(LED_RED, OUTPUT); pinMode(LED_GREEN, OUTPUT); pinMode(LED_BLUE, OUTPUT); pinMode(LED_YELLOW, OUTPUT); pinMode(LED_CORRECT, OUTPUT); pinMode(LED_WRONG, OUTPUT); pinMode(BUTTON_RED, INPUT_PULLUP); pinMode(BUTTON_GREEN, INPUT_PULLUP); pinMode(BUTTON_BLUE, INPUT_PULLUP); pinMode(BUTTON_YELLOW, INPUT_PULLUP); pinMode(BUZZER, OUTPUT); }
Nuestra función de bucle contiene nuestro bucle principal del juego; utilizamos una caja de interruptor rápidamente elegir en que modo estamos situados. Esto se llama un "lazo de Super" diseño de programación. Esto nos permite tener fácilmente casos específicos o "modos" de diferentes partes del juego
void loop(){ // In what mode are we? switch(GAME_STATUS){ case 0: resetGame(); break; case 1: playSequence(); break; case 2: readSequence(); break; case 3: gameOver(); break; } }