ENIB 2022 - groupe C : flipper : Différence entre versions
(→photo de l'équipe) |
|||
(17 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 | ||
* 1 bouchon en liège | * 1 bouchon en liège | ||
* 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|haut des gachettes du flipper]] | ||
==Fichiers à avoir== | ==Fichiers à avoir== | ||
+ | * [[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 23 : | 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 à 12: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); } }