ENIB 2022 : Patate de forain

De Les Fabriques du Ponant
Révision datée du 19 janvier 2022 à 11:07 par Antonydbzh (discussion | contributions) (Cablage)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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 piézoé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.

Les capteurs sont fixés à la planche du dessous à la colle. Le coussin est lui aussi collé mais à la planche du haut. Pour fixer les deux planches entre elles sans que ce soit fixe (pour que les capteurs fonctionnent bien), nous avons perforé 4 trous dans les coins de chaque planche et passé de grosses vis dans ces trous.

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
  • pistolet à colle
  • 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;
    
     if (prev<=333)
  {
    lcd.setRGB(0, 255, 0);      // fond de l'écran lcd vert si le score est dans le premier tier
    }
  else if (prev<=666)
  {
    lcd.setRGB(0, 0, 255);      // fond de l'écran lcd bleu si le score est dans le deuxième tier
  }
  else
  {
    lcd.setRGB(255, 0, 0);      // fond de l'écran lcd rouge si le score est dans le troisième tier
  }
  
    Serial.println(prev);
    
    }
  }
  else
  {
    prev=0;         // si le bouton est appuyé, le précedent score est remis à 0
    lcd.setRGB(colorR, colorG, colorB);
    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

Cablage bb.jpg

Catégories