ENIB 2022 - groupe A : Simon : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Code)
Ligne 5 : Ligne 5 :
 
Nicolas Demailly effectuent son travail de Stakhanoviste afin de fournir un code d'une qualité exceptionnelle
 
Nicolas Demailly effectuent son travail de Stakhanoviste afin de fournir un code d'une qualité exceptionnelle
  
 +
==Principe du jeu==
 +
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 ? ==
 
==Que fait ce projet ? ==
 
"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é."
 
"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é."

Version du 14 janvier 2022 à 11:24


photos

Nicolacodesimon.jpg

Nicolas Demailly effectuent son travail de Stakhanoviste afin de fournir un code d'une qualité exceptionnelle

Principe du jeu

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 ?

"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é." Notre projets propose de recréer un Simon avec les matériaux du bord

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

Imagemachinesimon.jpg
Ledallumésionm.jpg
Schema elec simon.png

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;
        }
    }
}

Catégories