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

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Fichiers à avoir)
(photo de l'équipe)
 
(14 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
==photo de l'équipe==
 
==photo de l'équipe==
[[Fichier:Photoenib2018.jpg|600px]]
 
  
 
==Que fait ce projet ? ==
 
==Que fait ce projet ? ==
Ligne 10 : Ligne 9 :
 
* 2 gachettes de flipper (voir le fichier stl puis les imprimer)
 
* 2 gachettes de flipper (voir le fichier stl puis les imprimer)
 
* planches en bois à couper aux bonnes dimensions
 
* planches en bois à couper aux bonnes dimensions
* x capteurs piezo
+
* x capteurs piezo avec résistance d'un MegΩ
 
* 4 élastiques
 
* 4 élastiques
 
* une bille
 
* une bille
Ligne 16 : Ligne 15 :
 
* une tige en bois (dans laquelle on pourra embrocher des bouchons en lièges)
 
* une tige en bois (dans laquelle on pourra embrocher des bouchons en lièges)
  
[[media:Haut gachette.stl|vignette|haut des gachettes du flipper]]
+
[[media:Haut gachette.stl|haut des gachettes du flipper]]
 +
 
 
==Fichiers à avoir==
 
==Fichiers à avoir==
[[media:Gachette.stl|haut gachettes du flipper]]
+
* [[Fichier:Haut gachette.stl]] à imprimer en 3D deux fois
 +
* [[Fichier:Bas.stl]] à imprimer en 3D deux fois également
 +
 
 +
==Comment faire==
 +
[[Image:Flipper2022ENIBcabalage.png]]
  
 
==Sources==
 
==Sources==
Ligne 25 : Ligne 29 :
 
==Code==
 
==Code==
 
<pre>
 
<pre>
////////////////////////////////
+
#include "EEPROM.h"
//          Test              //
+
#include <Wire.h>
// capteur de pression Piezo //
+
#include "rgb_lcd.h"
////////////////////////////////
+
   
/*
+
rgb_lcd lcd;
*  vendredi 30 juillet 2021
+
//branchement ecran lcd à Arduino Nano :   GND relié à la masse     VCC relié au 5V     SDA relié à A4      SCL relié à A5
*  D1 mini
+
const int colorR = 255;
*  code inspiré de Arduino FlossManual - https://fr.flossmanuals.net/arduino/_draft/_v/1.0/perroquet/
+
const int colorG = 255;
*  matériel
+
const int colorB = 255;
*  - 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>
 
</pre>
  

Version actuelle datée du 19 janvier 2022 à 12:12

photo de l'équipe

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)

haut des gachettes du flipper

Fichiers à avoir

Comment faire

Flipper2022ENIBcabalage.png

Sources

Code

#include "EEPROM.h"
#include <Wire.h>
#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