ENIB 2022 : Patate de forain
Révision datée du 17 janvier 2022 à 13:42 par Fotomy (discussion | contributions) (→Que fait ce projet ?)
Sommaire
photo de l'équipe
Noé Paillet, Baptiste Rault, Tanguy Orhon, Alexis Jan, Romain Jaffré
Description du projet
Le projet patate de forain consiste en un "punchingball" a frapper le plus fort possible pour obtenir un score.
4 petits capteurs piezoélectriques sont coincés entre deux planches de bois. Un paquet de cotons plié en deux et stoché afin de le maintenir sous forme de petit coussin sert de punchingball collé a la planche. Il suffit donc de mettre un coup dans le coussin et cela écrase les capteurs entre les planches. le résultat de chaque capteur est ensuite récupéré par la carte arduino qui en calcule la moyenne et renvoie le score sur l'écran LCD. Un pouton poussoir sert de reset pour le score actuel afin de pouvoir mettre un nouveau coup.
Liste des composants
- paquet de cotons
- deux petites planches de bois
- Carte Arduino nano
- Ecran Grove-LCD RGB Backlight
- 4 Capteurs piezo électrique
- 1 bouton poussoir
- plaque labdec
- fils électriques
- Mon gros coup de poing
sources
Code
int maxi = 0; // variable du high score int prev = 0; // variable du score actuel bool acq = true; bool dcyState = false; #include <Wire.h> #include "rgb_lcd.h" rgb_lcd lcd; const int colorR = 50; //definition de la couleur de fond de l'écran lcd (ici du gris) const int colorG = 50; const int colorB = 50; void setup() { pinMode(A0, INPUT); //piezo 1 pinMode(A1, INPUT); //piezo 2 pinMode(A2, INPUT); //piezo 3 pinMode(A3, INPUT); //piezo 4 pinMode(2, INPUT); //bouton poussoir Serial.begin(9600); lcd.begin(16, 2); lcd.setRGB(colorR, colorG, colorB); } void loop() { dcyState = digitalRead(2); // état du bouton poussoir (1 si appuyé, 0 si non appuyé) //Serial.println(dcyState); if (dcyState == 0) // si le bouton n'est pas en cours d'appuie { int in0 = analogRead(A0); int in1 = analogRead(A1); int in2 = analogRead(A2); int in3 = analogRead(A3); int in=(in0+in1+in2+in3)/4; // on calcule le score moyen obtenu par les 4 capteurs in = map(in,0,1023,0,999); // on convertit un score allant de 0 à 1023 en un code allant de 0 à 999. if (in > prev) { if (in > maxi) { maxi = in; // Si le meilleur score est battu, on le remplace par le score actuel } prev = in; Serial.println(prev); } } else { prev=0; // si le bouton est appuyé, le précedent score est remis à 0 Serial.println(prev); } if (prev<10) // condition pour éviter d'avoir du bruit dans le résultat. Si il est inférieur à 10, l'écran affiche 0 { lcd.setCursor(0,0); lcd.print("your score:"); lcd.setCursor(11,0); // placement à la douzième colomne de la preière ligne (après your score) lcd.print("0 "); } else // affichage à l'écran des scores { lcd.setCursor(0,0); // placement à la première colomne de la preière ligne lcd.print("your score:"); lcd.print(prev); lcd.setCursor(0,1); // placement à la première colomne de la deuxième ligne lcd.print("high score:"); lcd.print(maxi); } }