ENIB 2023 : Panique dans les Monts

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Photo de l'équipe

Photo pdgo.jpg

Que faut-il faire dans ce projet ?

Deux alpinistes se sont perdu dans les monts durant une randonnée. Afin de sauver leur vie il faut résoudre une suite d'enigme. Chaque solution vous amènera a la prochaine énigme pour trouver la trappe ou se trouve les alpinistes.

Liste des composants

  • W-mos D1 mini
  • Ecran LCD
  • Moteur
  • Bouton poussoir
  • Resistance

Liste des machines utilisé

  • Découpeuse laser
  • Imprimante 3D
  • Pistolet a colle
  • Fer a souder

Photos du câblage

Cablage1.jpg Cablage2.jpg

Code

#include <Servo.h>                    // permet de faire appel à la bibliothèque Servo

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

Servo monservo;                       // crée une constante appelée « monservo » utilisable par la bibliothèque Servo.
                                      // (vous pouvez la nommez comme vous voulez, exemple : servo_1, mais pensez à le remplacer dans le programme).

int boutonservo = D6; 
int boutonlcd = D7 ;                      // déclare le bouton poussoir sur la PIN 8.
int etatboutonservo = 0;                   // variable représentant le bouton, soit ouvert ou fermé, ici au départ à 0 donc fermé.
int etatboutonlcd = 0;                   // variable représentant le bouton, soit ouvert ou fermé, ici au départ à 0 donc fermé.


void setup() {
pinMode (boutonservo, INPUT) ;             // on indique que le bouton est une entrée.
pinMode (boutonlcd, INPUT) ;             // on indique que le bouton est une entrée.

monservo.attach(D5);                   // commande de la bibliothèque Servo, qui consiste à « attacher » le servomoteur à la PIN 9
monservo.write (0); 

lcd.init();

}

void loop() {
  etatboutonservo = digitalRead (boutonservo);  // On lit l’état du bouton pour savoir s’il est ouvert ou fermé

  if (etatboutonservo==HIGH) {            // Si la variable “etatbouton” est ouverte, à l’état haut, donc laisse passer le courant.
    monservo.write (190);              // alors le servomoteur prend un angle de 90°.
    delay(5000) ;                     // on attend un délais de 5 secondes 

    lcd.backlight();
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("trouves le bouton");
      lcd.setCursor(0,1);
      lcd.print("des énigmes"); 
    //monservo.write (0);               // le servomoteur revient à l’angle 0, sa position de départ.   
    //delay(150);                       // crée un délais de 150 millisecondes avant de refaire la boucle et de tester à nouveau l’état du bouton.
    }
  
   etatboutonlcd = digitalRead (boutonlcd);  // On lit l’état du bouton pour savoir s’il est ouvert ou fermé

  if (etatboutonlcd==HIGH) {
      lcd.backlight();
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 1");
      lcd.setCursor(0,1);
      lcd.print("Sans moi, Paris");  
      delay(2000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 1");
      lcd.setCursor(0,1); 
      lcd.print("serait pris !");  
      delay(2000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 1");
      lcd.setCursor(0,1); 
      lcd.print("Qui suis-je ? "); 
      delay(3000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 2");
      lcd.setCursor(0,1);
      lcd.print("l'oiseau me ");  
      delay(2000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 2");
      lcd.setCursor(0,1); 
      lcd.print("sort et l'humain ");  
      delay(2000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 2");
      lcd.setCursor(0,1); 
      lcd.print("me vole! "); 
      delay(2000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Enigme 2");
      lcd.setCursor(0,1); 
      lcd.print("Qui suis-je ? "); 

    }        
        
    
}



Catégories