ENIB 2022 - groupe C : flipper
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)
vignette|haut des gachettes du flipper
Fichiers à avoir
- Fichier:Haut gachette.stl à imprimer en 3D deux fois
- Fichier:Bas.stl à imprimer en 3D deux fois également
Sources
- gestion de la mémoire arduino : https://zestedesavoir.com/tutoriels/374/gestion-de-la-memoire-sur-arduino/
- 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); }
}