ENIB 2023 : Penchez-vous, et toussez
photo de l'équipe
Que fait ce projet ?
Le projet consiste a trouver l'angle exacte du plateau pour gagner. En effet en rajoutant du poids le plateau va plus ou moins se pencher.
Le projet est poser sur une plaque de bois de 30*30cm.
Il contient une boite agissant comme un tableau de bord.
Un cylindre avec une liaison rotule (imprimée en 3d) .
Un plateau positionner sur la liaison rotule (qui est incliné en fonction de la répartition du poids).
Liste des composants
- Accéléromètre
- Du poids
- Arduino micro-pro
- écran lcd
- Câbles
- carton
- Impression d’une liaison rotule en 3d
- bouton poussoir
- led rouge
- led verte
- bouteille
En plus du code arduino nous avons fait deux fichier inkskape pour faire le tableau de bord et graver. Nous avons aussi fait la liaison rotule avec l'imprimante 3D
Code:
- include<Wire.h>
const int MPU6050_addr=0x68; int16_t AccX,AccY,AccZ,Temp,GyroX,GyroY,GyroZ; float angle,angle_solution,solution_up,solution_down,difficulty; unsigned long startTime = 0;
int pin_led_vert=6;
int pin_led_rouge=5;
int pin_boutton_facile=7;
int pin_boutton_moyen=8;
int pin_boutton_difficile=9;
int pin_bp=10;
int lancement_jeu=0;
bool button_facile,button_moyen,button_difficile,BP;
void setup(){
Wire.begin(); Wire.beginTransmission(MPU6050_addr); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); Serial.begin(9600);
angle_solution=60;
pinMode(pin_led_vert,OUTPUT); pinMode(pin_led_rouge,OUTPUT); pinMode(pin_boutton_facile, INPUT); pinMode(pin_boutton_moyen, INPUT); pinMode(pin_boutton_difficile, INPUT); pinMode(pin_boutton_facile, INPUT); pinMode(pin_bp, INPUT);
}
void loop(){
Wire.beginTransmission(MPU6050_addr); Wire.write(0x3B); Wire.endTransmission(false); Wire.requestFrom(MPU6050_addr,14,true); AccX=Wire.read()<<8|Wire.read(); AccY=Wire.read()<<8|Wire.read(); AccZ=Wire.read()<<8|Wire.read(); Temp=Wire.read()<<8|Wire.read(); GyroX=Wire.read()<<8|Wire.read(); GyroY=Wire.read()<<8|Wire.read(); GyroZ=Wire.read()<<8|Wire.read();
angle = atan2(AccY, AccX); angle = angle * 180 / 3.14159; angle=abs(angle); Serial.print(angle); Serial.print('\n');
//Etats des boutons button_facile = digitalRead(pin_boutton_facile); button_moyen = digitalRead(pin_boutton_moyen); button_difficile = digitalRead(pin_boutton_difficile); BP = digitalRead(pin_bp);
//Appuie sur bouton poussoir de lancement if(BP==LOW) { lancement_jeu=1; }
if(lancement_jeu) { digitalWrite(pin_led_rouge,HIGH);
//Selection du niveau de difficulté
if(button_facile==HIGH) { difficulty=20; } if(button_moyen==HIGH) { difficulty=15; } if(button_difficile==HIGH) { difficulty=10; } solution_up=angle_solution+difficulty; solution_down=angle_solution-difficulty;
//Vérification de l'angle if (angle >= solution_down && angle <= solution_up) { /* { if (startTime == 0) { startTime = millis(); } if (millis() - startTime > 1000) { Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); Serial.print("Vous avez gagné"); startTime = 0; } else { startTime = 0; } } */ Serial.print("Vous avez gagné"); digitalWrite(pin_led_vert,HIGH); digitalWrite(pin_led_rouge,LOW); lancement_jeu=0;
}
delay(100);
}
}