ENIB 2022 - groupe C : flipper : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Liste des composants)
(Code)
Ligne 25 : Ligne 25 :
 
* gestion de la mémoire arduino : https://zestedesavoir.com/tutoriels/374/gestion-de-la-memoire-sur-arduino/
 
* gestion de la mémoire arduino : https://zestedesavoir.com/tutoriels/374/gestion-de-la-memoire-sur-arduino/
  
==Code==
+
#include "EEPROM.h"
<pre>
+
#include <Wire.h>
////////////////////////////////
+
#include "rgb_lcd.h"
//          Test              //
+
// capteur de pression Piezo  //
+
rgb_lcd lcd;
////////////////////////////////
+
//branchement ecran lcd à Arduino Nano :   GND relié à la masse     VCC relié au 5V     SDA relié à A4      SCL relié à A5
/*
+
const int colorR = 255;
*  vendredi 30 juillet 2021
+
const int colorG = 255;
*  D1 mini
+
const int colorB = 255;
*  code inspiré de Arduino FlossManual - https://fr.flossmanuals.net/arduino/_draft/_v/1.0/perroquet/
 
*  matériel
 
*  - D1 mini
 
*  - breadboard
 
*  - jumper
 
*  - piezo
 
*  - résistance 10 Mégaohms
 
 
*  *                            BROCHAGE                           
 
                                _________________                       
 
                                /     D1 mini     \                     
 
                            -  |[ ]RST        TX[ ]| -                   
 
Résistance - Capteur Piezo  -  |[X]A0  -GPIO  RX[ ]| -                   
 
                              |[ ]D0-16    5-D1[ ]| -                   
 
                              |[ ]D5-14    4-D2[ ]| -                   
 
                            -  |[ ]D6-12    0-D3[ ]| -             
 
                            -  |[ ]D7-13    2-D4[ ]| LED_BUILTIN         
 
                            -  |[ ]D8-15    GND[X]| - GND - Capteur Piezo - resistance           
 
                            -  |[ ]3V3 .      5V[X]| - ruban de Led       
 
                              |      +---+      |                   
 
                              |_______|USB|_______|                     
 
  
  
*  Antony Le Goïc-Auffret
+
int currentState;
+
const int BUTTON_PIN = 6;
*/
+
int startgame = 0;
 +
int endgame = 0;
  
 +
//branchement capteur piezo  :  brancher en parallèle une résistance et le capteur piezo,  les broches du capteur piezo : Une broche sur GND  l'autre broche sur A0
 
// Variable pour désigner quelle pin est utilisée pour le capteur  
 
// Variable pour désigner quelle pin est utilisée pour le capteur  
 
int capteurPiezo = A0; // pin Analog 0
 
int capteurPiezo = A0; // pin Analog 0
 
// Variable pour contenir la valeur du capteur
 
// Variable pour contenir la valeur du capteur
 
int valeurPiezo ;
 
int valeurPiezo ;
 +
int score;
 +
int highscore;
  
 
void setup() {
 
void setup() {
 
// Établit la connexion série à 9600 bauds
 
// Établit la connexion série à 9600 bauds
Serial.begin(9600);  
+
Serial.begin(9600);
 +
pinMode(BUTTON_PIN, INPUT_PULLUP);
 +
highscore = EEPROM.read(600);
 +
//Serial.println("Highscore");Serial.println(highscore);
 +
 
 +
// set up the LCD's number of columns and rows:
 +
lcd.begin(16, 2);
 +
 +
lcd.setRGB(colorR, colorG, colorB);
 +
 +
    // Print a message to the LCD.
 +
lcd.clear();
 +
lcd.setCursor(0,0);
 +
 
 
}
 
}
  
 
void loop() {
 
void loop() {
 +
 +
currentState = digitalRead(BUTTON_PIN);
 +
//Serial.println("currentState");Serial.println(currentState);
 +
 +
if(currentState==0)
 +
{
 +
  delay(100);
 +
  if(startgame==0)
 +
{startgame=1;
 +
score=0;
 +
endgame=0;}
 +
else
 +
{startgame=0;
 +
endgame=1;}
 +
}
 +
 +
if (startgame==0)
 +
{
 +
lcd.clear();
 +
lcd.setCursor(0,0);
 +
lcd.print("Highscore : ");lcd.print(highscore);
 +
if(score!=0)
 +
{
 +
lcd.setCursor(0,1);
 +
lcd.print("Your score : ");lcd.print(score);
 +
}
 +
}
 +
 +
if (startgame==1)
 +
{
 +
 
// Lit la pin du capteur et l'assigne à la variable valeurPiezo  
 
// Lit la pin du capteur et l'assigne à la variable valeurPiezo  
 
valeurPiezo = analogRead(capteurPiezo);
 
valeurPiezo = analogRead(capteurPiezo);
 
// Affiche au moniteur série la valeur de valeurPiezo  
 
// Affiche au moniteur série la valeur de valeurPiezo  
Serial.println(valeurPiezo);
+
if (valeurPiezo >= 1 )
 +
{
 +
  score+=1;
 +
  //Serial.println("score");Serial.println(score);  
 +
}
 +
 
 
// Laisse un court délai afin que l'utilisateur puisse lire les valeurs correctement
 
// Laisse un court délai afin que l'utilisateur puisse lire les valeurs correctement
delay(100);  
+
delay(50);
 +
 
 +
if(score>highscore)
 +
{EEPROM.write(600,score);
 +
}
 +
lcd.clear();
 +
lcd.setCursor(0,0);
 +
lcd.print("Highscore : ");lcd.print(highscore);
 +
lcd.setCursor(0,1);
 +
lcd.print("Your score : ");lcd.print(score);
 +
}
 +
 
 
}
 
}
</pre>
 
  
 
==Catégories==
 
==Catégories==
  
 
[[Catégorie:Enib2022]]
 
[[Catégorie:Enib2022]]

Version du 17 janvier 2022 à 16:16

photo de l'équipe

Photoenib2018.jpg

Que fait ce projet ?

L'objectif est de recréer un flipper taille miniature.

Liste des composants

  • carte arduino nano
  • 2 gachettes de flipper (voir le fichier stl puis les imprimer)
  • planches en bois à couper aux bonnes dimensions
  • x capteurs piezo avec résistance d'un MegΩ
  • 4 élastiques
  • une bille
  • 1 bouchon en liège
  • une tige en bois (dans laquelle on pourra embrocher des bouchons en lièges)

vignette|haut des gachettes du flipper

Fichiers à avoir

Sources

  1. include "EEPROM.h"
  2. include <Wire.h>
  3. include "rgb_lcd.h"

rgb_lcd lcd; //branchement ecran lcd à Arduino Nano : GND relié à la masse VCC relié au 5V SDA relié à A4 SCL relié à A5 const int colorR = 255; const int colorG = 255; const int colorB = 255;


int currentState; const int BUTTON_PIN = 6; int startgame = 0; int endgame = 0;

//branchement capteur piezo  : brancher en parallèle une résistance et le capteur piezo, les broches du capteur piezo : Une broche sur GND l'autre broche sur A0 // Variable pour désigner quelle pin est utilisée pour le capteur int capteurPiezo = A0; // pin Analog 0 // Variable pour contenir la valeur du capteur int valeurPiezo ; int score; int highscore;

void setup() { // Établit la connexion série à 9600 bauds Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); highscore = EEPROM.read(600); //Serial.println("Highscore");Serial.println(highscore);

// set up the LCD's number of columns and rows:

lcd.begin(16, 2);

lcd.setRGB(colorR, colorG, colorB);

   // Print a message to the LCD.

lcd.clear(); lcd.setCursor(0,0);

}

void loop() {

currentState = digitalRead(BUTTON_PIN); //Serial.println("currentState");Serial.println(currentState);

if(currentState==0) {

 delay(100);
 if(startgame==0)
{startgame=1;
score=0;
endgame=0;}
else
{startgame=0;
endgame=1;}

}

if (startgame==0) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Highscore : ");lcd.print(highscore); if(score!=0) { lcd.setCursor(0,1); lcd.print("Your score : ");lcd.print(score); } }

if (startgame==1) {

// Lit la pin du capteur et l'assigne à la variable valeurPiezo valeurPiezo = analogRead(capteurPiezo); // Affiche au moniteur série la valeur de valeurPiezo if (valeurPiezo >= 1 ) {

 score+=1;
 //Serial.println("score");Serial.println(score); 

}

// Laisse un court délai afin que l'utilisateur puisse lire les valeurs correctement delay(50);

if(score>highscore)

{EEPROM.write(600,score);
}

lcd.clear(); lcd.setCursor(0,0); lcd.print("Highscore : ");lcd.print(highscore); lcd.setCursor(0,1); lcd.print("Your score : ");lcd.print(score); }

}

Catégories