ENIB 2022 - groupe C : flipper : Différence entre versions
|  (→Fichiers à avoir) |  (→photo de l'équipe) | ||
| (10 révisions intermédiaires par 2 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
| ==photo de l'équipe== | ==photo de l'équipe== | ||
| − | |||
| ==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 | + | [[media:Haut gachette.stl|haut des gachettes du flipper]] | 
| + | |||
| ==Fichiers à avoir== | ==Fichiers à avoir== | ||
| − | * [[Fichier:Haut gachette.stl]] à imprimer en deux fois | + | * [[Fichier:Haut gachette.stl]] à imprimer en 3D deux fois | 
| − | * [[Fichier:Bas.stl]] à imprimer en deux fois  | + | * [[Fichier:Bas.stl]] à imprimer en 3D deux fois également | 
| + | |||
| + | ==Comment faire== | ||
| + | [[Image:Flipper2022ENIBcabalage.png]] | ||
| ==Sources== | ==Sources== | ||
| Ligne 26 : | Ligne 29 : | ||
| ==Code== | ==Code== | ||
| <pre> | <pre> | ||
| − | + | #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   | // 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( | + | 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( | + | 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 à 13:12
Sommaire
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)
Fichiers à avoir
- Fichier:Haut gachette.stl à imprimer en 3D deux fois
- Fichier:Bas.stl à imprimer en 3D deux fois également
Comment faire
Sources
- gestion de la mémoire arduino : https://zestedesavoir.com/tutoriels/374/gestion-de-la-memoire-sur-arduino/
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);
}
}



