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 ? "); } }