ENIB 2023 : Panique dans les Monts
Sommaire
Photo de l'équipe
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
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 ? ");
}
}
