Projet mini Arduino Déchiffrez le code

Un projet Arduino simple avec des boutons qui vous demande de deviner le code généré par le microcontrôleur. Si vous le souhaitez, des LED peuvent être connectées à la carte Arduino pour indiquer la saisie correcte et incorrecte du code. Toutes les informations (le chiffre qui a été généré et la réponse de l’utilisateur) seront affichées sur le moniteur du port Arduino IDE. Si vous le souhaitez, un écran OLED 128×64 Arduino optionnel peut être connecté.


Ce dont vous aurez besoin

  • Arduino Uno / Arduino Nano / Arduino Mega
  • boutons-poussoirs
  • LEDs et resistances
  • breadboard
  • fils de connexion

Matériel supplémentaire sur ce sujet:

  1. Branchement et utilisation d’un Buzzer Arduino
  2. Branchement bouton-poussoir avec Arduino
  3. Jeu Arduino avec LEDs «Répétez la séquence»

Projet Arduino avec boutons « Déchiffrez le code »

Le circuit électrique. Projet mini Arduino avec boutons
Le circuit électrique. Projet mini Arduino avec boutons

L’image ci-dessus montre l’assemblage du circuit du projet avec les boutons du code de devinette. 2 Notez que les boutons sont connectés à l’Arduino sans résistance, car les broches de la carte sont configurées avec INPUT_PULLUP, qui tirera vers le haut des résistances de 20kOhm aux ports dans le microcontrôleur lui-même. Lorsque le bouton correspondant est pressé, les numéros « 1 », « 2 » ou « 3 » seront ajoutés à la chaîne String otv = «  »;

Programme Arduino pour projet « Déchiffrez le code »


byte x;
byte w = 1;
String otv = "";
String KOD = "";
// un tableau de variantes de code
char* kod[6] = {"123", "132", "231", "213", "321", "312"};
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(3, INPUT_PULLUP);
  // broches pour la connexion des LED
  pinMode(13, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() {

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

/// 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(3);
    
   // 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(3);
     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(3);
    
   // 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(3);
     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(3);
    
   // 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(3);
     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(10, HIGH); delay(1000); digitalWrite(10, 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(13, HIGH); delay(1000); digitalWrite(13, LOW);
    otv = "";  // effacer la ligne
    w = 2;     // nouvelle tentative de saisie
  }
}

Explication du code Arduino projet Arduino mini:

  1. le programme utilise six variantes de code, choisies au hasard. Pour deviner le code, il faut appuyer une seule fois sur chaque bouton, mais le nombre d’appuis n’est pas limité;
  2. après la saisie de trois chiffres (les boutons ont été pressés trois fois), le code généré est comparé à la réponse saisie.

Conclusion. Le code peut être utilisé dans divers projets, comme la création d’une alarme, où le buzzer ne s’éteindra que si le code est correctement saisi. On peut aussi fabriquer une serrure à code, mais dans ce cas, le code ne doit pas être généré à chaque fois (sinon n’importe qui peut l’ouvrir), le code peut être plus complexe, composé de plus de trois numéro.





2 Replies to “Projet mini Arduino avec boutons « Déchiffrez le code »”

  1. Bonjour
    J’ai besoin de vos lumières pour raccorder un boitier LED Varad vision ML200 avec 4 fiches en sortie (25,rien,54 42) qui vont se raccorder sur 4 LEDS (25, KL E, JH14, JH08).
    J’ai malheureusement tout débranché suite à l’incendie d’un câblage électrique et maintenant je suis perdu
    Je ne comprends absolument rien à votre langage codé
    Merci d’avance

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.