ENIB 2022 : Patate de forain

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

photo de l'équipe

Noé Paillet, Baptiste Rault, Tanguy Orhon, Alexis Jan, Romain Jaffré

Description du projet

Le projet patate de forain consiste en un "punchingball" à frapper le plus fort possible pour obtenir un score.

4 petits capteurs piezoélectriques sont coincés entre deux planches de bois. Un paquet de cotons plié en deux et schotché afin de le maintenir sous forme de petit coussin sert de punchingball collé à la planche. Il suffit donc de mettre un coup dans le coussin et cela écrase les capteurs entre les planches. Le résultat de chaque capteur est ensuite récupéré par la carte arduino qui en calcule la moyenne et renvoie le score sur l'écran LCD. Un bouton poussoir sert de reset pour le score actuel afin de pouvoir mettre un nouveau coup.

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