ENIB 2022 : Patate de forain

De Les Fabriques du Ponant
Révision datée du 17 janvier 2022 à 12:13 par Fotomy (discussion | contributions) (Cablage)
Aller à : navigation, rechercher

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

Cablage

Catégories