ENIB 2022 : Patate de forain : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Liste des composants)
(Code)
Ligne 32 : Ligne 32 :
 
==Code==
 
==Code==
 
<pre>
 
<pre>
ici je pose mon code documenté !
+
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

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);
}
}

Catégories