ENIB 2022 : Patate de forain
Sommaire
photo de l'équipe
Noé Paillet, Baptiste Rault, Tanguy Orhon, Alexis Jan, Romain Jaffré
Que fait ce projet ?
Le projet patate de forain consiste en un "punchingball" a frapper le plus fort possible pour obtenir un score.
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); } }