ENIB 2022 - groupe A : Simon : Différence entre versions
Ligne 6 : | Ligne 6 : | ||
==Principe du jeu== | ==Principe du jeu== | ||
+ | "apparu à la fin des années 70, de forme circulaire et qui comprenait 4 gros boutons lumineux de couleurs différentes => le jeu proposait une séquence lumineuse accompagnée de sons, que le joueur devait reproduire sans se tromper dans un délai donné." | ||
Le jeu du Simon trouve son origine dans le jeu pour enfant Jacques a dit, d'où il tire également son nom, puisque dans les pays anglophones ce n'est pas Jacques mais Simon (Simon Says…) qui donne les ordres. | Le jeu du Simon trouve son origine dans le jeu pour enfant Jacques a dit, d'où il tire également son nom, puisque dans les pays anglophones ce n'est pas Jacques mais Simon (Simon Says…) qui donne les ordres. | ||
− | |||
Le jeu, électronique, éclaire une des quatre couleurs et produit un son toujours associé à cette couleur. Le joueur doit alors appuyer sur la touche de la couleur qui vient de s'allumer dans un délai assez court. | Le jeu, électronique, éclaire une des quatre couleurs et produit un son toujours associé à cette couleur. Le joueur doit alors appuyer sur la touche de la couleur qui vient de s'allumer dans un délai assez court. | ||
− | |||
Le jeu répète la même couleur et le même son, puis ajoute au hasard une nouvelle couleur. Le joueur doit reproduire cette nouvelle séquence. Chaque fois que le joueur reproduit correctement la séquence, le jeu ajoute une nouvelle couleur. | Le jeu répète la même couleur et le même son, puis ajoute au hasard une nouvelle couleur. Le joueur doit reproduire cette nouvelle séquence. Chaque fois que le joueur reproduit correctement la séquence, le jeu ajoute une nouvelle couleur. | ||
==Que fait ce projet ? == | ==Que fait ce projet ? == | ||
− | + | ||
− | Notre projets propose de recréer un '''Simon''' avec les matériaux du bord | + | Notre projets propose de recréer un '''Simon''' avec les matériaux du bord et ceux disponible au fablab des fabriques du ponant. |
==Liste des composants== | ==Liste des composants== |
Version du 14 janvier 2022 à 10:25
Sommaire
photos
Nicolas Demailly effectuent son travail de Stakhanoviste afin de fournir un code d'une qualité exceptionnelle
Principe du jeu
"apparu à la fin des années 70, de forme circulaire et qui comprenait 4 gros boutons lumineux de couleurs différentes => le jeu proposait une séquence lumineuse accompagnée de sons, que le joueur devait reproduire sans se tromper dans un délai donné." Le jeu du Simon trouve son origine dans le jeu pour enfant Jacques a dit, d'où il tire également son nom, puisque dans les pays anglophones ce n'est pas Jacques mais Simon (Simon Says…) qui donne les ordres. Le jeu, électronique, éclaire une des quatre couleurs et produit un son toujours associé à cette couleur. Le joueur doit alors appuyer sur la touche de la couleur qui vient de s'allumer dans un délai assez court. Le jeu répète la même couleur et le même son, puis ajoute au hasard une nouvelle couleur. Le joueur doit reproduire cette nouvelle séquence. Chaque fois que le joueur reproduit correctement la séquence, le jeu ajoute une nouvelle couleur.
Que fait ce projet ?
Notre projets propose de recréer un Simon avec les matériaux du bord et ceux disponible au fablab des fabriques du ponant.
Liste des composants
■ Arduino micro pro (x1) : shorturl.at/detAX
■ RGB Screen (x1) : shorturl.at/gtCU9
■ LED red, blue, green, yellow (x4) : shorturl.at/cABQ0
■ Resistors (220 Ohms) (x4) : https://geni.us/Ufa2s
■ Wire: https://geni.us/22AWGWire
■ Arcade Buttons (x4) : shorturl.at/howNQ
■ 5v buzzer (x1) : https://geni.us/5vBuzzer
Le Projet
Code
// Include Libraries #include "Arduino.h" #include "Buzzer.h" #include "LED.h" // Pin Definitions #define BUZZER_PIN_SIG 2 #define LEDB_PIN_VIN 3 #define LEDG_PIN_VIN 5 #define LEDR_PIN_VIN 6 #define LEDY_PIN_VIN 8 #define LEDARCADEBUTTON_1_PIN_BUTTON_SIG 4 #define LEDARCADEBUTTON_1_PIN_LED_VCC 10 #define LEDARCADEBUTTON_2_PIN_BUTTON_SIG 7 #define LEDARCADEBUTTON_2_PIN_LED_VCC 11 #define LEDARCADEBUTTON_3_PIN_BUTTON_SIG 12 #define LEDARCADEBUTTON_3_PIN_LED_VCC 13 #define LEDARCADEBUTTON_4_PIN_BUTTON_SIG A1 #define LEDARCADEBUTTON_4_PIN_LED_VCC 9 // Global variables and defines // object initialization Buzzer buzzer(BUZZER_PIN_SIG); LED ledB(LEDB_PIN_VIN); LED ledG(LEDG_PIN_VIN); LED ledR(LEDR_PIN_VIN); LED ledY(LEDY_PIN_VIN); // define vars for testing menu const int timeout = 10000; //define timeout of 10 sec char menuOption = 0; long time0; // Setup the essentials for your circuit to work. It runs first every time your circuit is powered with electricity. void setup() { // Setup Serial which is useful for debugging // Use the Serial Monitor to view printed messages Serial.begin(9600); while (!Serial) ; // wait for serial port to connect. Needed for native USB Serial.println("start"); menuOption = menu(); } // Main logic of your circuit. It defines the interaction between the components you selected. After setup, it runs over and over again, in an eternal loop. void loop() { if(menuOption == '1') { // Buzzer - Test Code // The buzzer will turn on and off for 500ms (0.5 sec) buzzer.on(); // 1. turns on delay(500); // 2. waits 500 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds. buzzer.off(); // 3. turns off. delay(500); // 4. waits 500 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds. } else if(menuOption == '2') { // LED - Basic Blue 5mm - Test Code // The LED will turn on and fade till it is off for(int i=255 ; i> 0 ; i -= 5) { ledB.dim(i); // 1. Dim Led delay(15); // 2. waits 5 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds. } ledB.off(); // 3. turns off } else if(menuOption == '3') { // LED - Basic Green 5mm - Test Code // The LED will turn on and fade till it is off for(int i=255 ; i> 0 ; i -= 5) { ledG.dim(i); // 1. Dim Led delay(15); // 2. waits 5 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds. } ledG.off(); // 3. turns off } else if(menuOption == '4') { // LED - Basic Red 5mm - Test Code // The LED will turn on and fade till it is off for(int i=255 ; i> 0 ; i -= 5) { ledR.dim(i); // 1. Dim Led delay(15); // 2. waits 5 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds. } ledR.off(); // 3. turns off } else if(menuOption == '5') { // LED - Basic Yellow 5mm - Test Code // The LED will turn on and fade till it is off for(int i=255 ; i> 0 ; i -= 5) { ledY.dim(i); // 1. Dim Led delay(15); // 2. waits 5 milliseconds (0.5 sec). Change the value in the brackets (500) for a longer or shorter delay in milliseconds. } ledY.off(); // 3. turns off } else if(menuOption == '6') { // Disclaimer: The Arcade Button with LED - 30mm Translucent Red #1 is in testing and/or doesn't have code, therefore it may be buggy. Please be kind and report any bugs you may find. } else if(menuOption == '7') { // Disclaimer: The Arcade Button with LED - 30mm Translucent Red #2 is in testing and/or doesn't have code, therefore it may be buggy. Please be kind and report any bugs you may find. } else if(menuOption == '8') { // Disclaimer: The Arcade Button with LED - 30mm Translucent Red #3 is in testing and/or doesn't have code, therefore it may be buggy. Please be kind and report any bugs you may find. } else if(menuOption == '9') { // Disclaimer: The Arcade Button with LED - 30mm Translucent Red #4 is in testing and/or doesn't have code, therefore it may be buggy. Please be kind and report any bugs you may find. } if (millis() - time0 > timeout) { menuOption = menu(); } } // Menu function for selecting the components to be tested // Follow serial monitor for instrcutions char menu() { Serial.println(F("\nWhich component would you like to test?")); Serial.println(F("(1) Buzzer")); Serial.println(F("(2) LED - Basic Blue 5mm")); Serial.println(F("(3) LED - Basic Green 5mm")); Serial.println(F("(4) LED - Basic Red 5mm")); Serial.println(F("(5) LED - Basic Yellow 5mm")); Serial.println(F("(6) Arcade Button with LED - 30mm Translucent Red #1")); Serial.println(F("(7) Arcade Button with LED - 30mm Translucent Red #2")); Serial.println(F("(8) Arcade Button with LED - 30mm Translucent Red #3")); Serial.println(F("(9) Arcade Button with LED - 30mm Translucent Red #4")); Serial.println(F("(menu) send anything else or press on board reset button\n")); while (!Serial.available()); // Read data from serial monitor if received while (Serial.available()) { char c = Serial.read(); if (isAlphaNumeric(c)) { if(c == '1') Serial.println(F("Now Testing Buzzer")); else if(c == '2') Serial.println(F("Now Testing LED - Basic Blue 5mm")); else if(c == '3') Serial.println(F("Now Testing LED - Basic Green 5mm")); else if(c == '4') Serial.println(F("Now Testing LED - Basic Red 5mm")); else if(c == '5') Serial.println(F("Now Testing LED - Basic Yellow 5mm")); else if(c == '6') Serial.println(F("Now Testing Arcade Button with LED - 30mm Translucent Red #1 - note that this component doesn't have a test code")); else if(c == '7') Serial.println(F("Now Testing Arcade Button with LED - 30mm Translucent Red #2 - note that this component doesn't have a test code")); else if(c == '8') Serial.println(F("Now Testing Arcade Button with LED - 30mm Translucent Red #3 - note that this component doesn't have a test code")); else if(c == '9') Serial.println(F("Now Testing Arcade Button with LED - 30mm Translucent Red #4 - note that this component doesn't have a test code")); else { Serial.println(F("illegal input!")); return 0; } time0 = millis(); return c; } } }