ENIB 2023 : D2CODE TON CODE

De Les Fabriques du Ponant
Aller à : navigation, rechercher

photo de l'équipe

Equipe.jpg

Que fait ce projet ?

On créé un code a décoder.

Liste des composants

  • bois
  • carton
  • peinture
  • eau
  • tasse
  • pinceau
  • découpeuse laser
  • fils
  • bouton poussoir
  • led
  • arduino
  • pc
  • patience

Code

byte x;
byte w = 1;
String otv = "";
String KOD = "";
// un tableau de variantes de code
char* kod[6] = {"123","132","213","231","312","321"};
boolean button1WasUp = true;
boolean button2WasUp = true;
boolean button3WasUp = true;

void setup() {
  Serial.begin(9600);
  // broches pour la connexion des boutons
  pinMode(5, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(2, INPUT_PULLUP);
  // broches pour la connexion des LED
  pinMode(16, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(20,OUTPUT);
  
}

void loop() {

/// FONCTION DE GÉNÉRATION DE CODE ///
  while (w == 1) {
    delay(500);
    digitalWrite(16, HIGH); digitalWrite(7, HIGH);
    delay(100);
    digitalWrite(16, LOW); digitalWrite(7, LOW);
    x = random(0, 5);
    KOD = String(kod[x]);
    Serial.print("Kode - "); 
    Serial.println(KOD);
    Serial.println("");
    Serial.print("Reponse - ");
    w = 2;
  }
  digitalWrite(20,HIGH);

/// ENTREZ LE PREMIER NUMÉRO ///
  while (w == 2) {
   // connaître le statut des boutons
   boolean button1IsUp = digitalRead(5);
   boolean button2IsUp = digitalRead(4);
   boolean button3IsUp = digitalRead(2);
    
   // si le bouton a été pressé, ajoutez "1" à la ligne
   if (button1WasUp && !button1IsUp) {
     delay(10);
     button1IsUp = digitalRead(5);
     if (!button1IsUp) { otv = otv + "1"; Serial.print("1"); w = 3;}
   }
   button1WasUp = button1IsUp;
   
   // si le bouton a été pressé, ajoutez "2" à la ligne
   if (button2WasUp && !button2IsUp) {
     delay(10);
     button2IsUp = digitalRead(4);
     if (!button2IsUp) { otv = otv + "2"; Serial.print("2"); w = 3;}
   }
   button2WasUp = button2IsUp;
    
   // si le bouton a été pressé, ajoutez "3" à la ligne
   if (button3WasUp && !button3IsUp) {
     delay(10);
     button3IsUp = digitalRead(2);
     if (!button3IsUp) { otv = otv + "3"; Serial.print("3"); w = 3;}
   }
   button3WasUp = button3IsUp;
  }

/// ENTRER LE DEUXIÈME NUMÉRO ///
  while (w == 3) {
   // connaître le statut des boutons
   boolean button1IsUp = digitalRead(5);
   boolean button2IsUp = digitalRead(4);
   boolean button3IsUp = digitalRead(2);
    
   // si le bouton a été pressé, ajoutez "1" à la ligne
   if (button1WasUp && !button1IsUp) {
     delay(10);
     button1IsUp = digitalRead(5);
     if (!button1IsUp) { otv = otv + "1"; Serial.print("1"); w = 4;}
   }
   button1WasUp = button1IsUp;
   
   // si le bouton a été pressé, ajoutez "2" à la ligne
   if (button2WasUp && !button2IsUp) {
     delay(10);
     button2IsUp = digitalRead(4);
     if (!button2IsUp) { otv = otv + "2"; Serial.print("2"); w = 4;}
   }
   button2WasUp = button2IsUp;
    
   // si le bouton a été pressé, ajoutez "3" à la ligne
   if (button3WasUp && !button3IsUp) {
     delay(10);
     button3IsUp = digitalRead(2);
     if (!button3IsUp) { otv = otv + "3"; Serial.print("3"); w = 4;}
   }
   button3WasUp = button3IsUp;
  }

/// ENTREZ LE TROISIÈME NUMÉRO ///
  while (w == 4) {
   // connaître le statut des boutons
   boolean button1IsUp = digitalRead(5);
   boolean button2IsUp = digitalRead(4);
   boolean button3IsUp = digitalRead(2);
    
   // si le bouton a été pressé, ajoutez "1" à la ligne
   if (button1WasUp && !button1IsUp) {
     delay(10);
     button1IsUp = digitalRead(5);
     if (!button1IsUp) { otv = otv + "1"; Serial.println("1"); w = 5;}
   }
   button1WasUp = button1IsUp;
   
   // si le bouton a été pressé, ajoutez "2" à la ligne
   if (button2WasUp && !button2IsUp) {
     delay(10);
     button2IsUp = digitalRead(4);
     if (!button2IsUp) { otv = otv + "2"; Serial.println("2"); w = 5;}
   }
   button2WasUp = button2IsUp;
    
   // si le bouton a été pressé, ajoutez "3" à la ligne
   if (button3WasUp && !button3IsUp) {
     delay(10);
     button3IsUp = digitalRead(2);
     if (!button3IsUp) { otv = otv + "3"; Serial.println("3"); w = 5;}
   }
   button3WasUp = button3IsUp;
  }

/// COMPARER LA RÉPONSE AU CODE ///
  if (KOD == otv ) {
    Serial.println(""); Serial.println("OUI !"); Serial.println("");
    digitalWrite(7, HIGH); delay(1000); digitalWrite(7, LOW);
    otv = "";  // effacer la ligne
    w = 1;     // générer un nouveau code
  }
  else  {
    Serial.println(""); Serial.println("NON !"); Serial.println("");
    Serial.print("Reponse - ");
    digitalWrite(16, HIGH); delay(1000); digitalWrite(16, LOW);
    otv = "";  // effacer la ligne
    w = 2;     // nouvelle tentative de saisie
  }

  
}

Catégories

FABIEN lab

fin

Boite.jpg Cable.jpg