ENIB 2022 : Patate de forain : Différence entre versions
(→Liste des composants) |
(→Code) |
||
Ligne 32 : | Ligne 32 : | ||
==Code== | ==Code== | ||
<pre> | <pre> | ||
− | ici | + | 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); | ||
+ | } | ||
+ | } | ||
</pre> | </pre> | ||
Version du 17 janvier 2022 à 12:05
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); } }