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 à 13: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);
}
}
