Étape 2: Code
Vous pouvez télécharger le sourcode complet en bas de cette étape.
Plus d’informations, au début de notre code, que nous commençons par définir nos variables globales et les codes PIN de notre 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;
Ensuite, nous définissons notre fonction de réglage où nous avons mis nos Modes de goupille de Arduino de sortie pour nos LEDs et à INPUT_PULLUP pour nos boutons poussoirs. Nous utilisons également un randomSeed pour s’assurer que notre séquence de randmon que nous créons est différent à chaque fois. En savoir plus sur randomSeed et pseudo aléatoire numbergenerators ici : 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); }
Notre fonction de boucle contient notre boucle de jeu principal ; Nous utilisons un switch case rapidement choisir dans quel mode nous sommes situés. C’est ce qu’on appelle une « boucle de Super » conception de la programmation. Cela nous permet d’avoir facilement des cas spécifiques ou « modes » pour les différentes parties du jeu
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; } }