ENIB 2022 - groupe A : Shooter Xtrem
Sommaire
photo avancement projet
Que fait ce projet ?
Shooter Xtrem : C'est une borne de basket tel que l'on peut voir dans les fêtes foraine ou bowling, Qui fonctionne à l'aide d'une photo résistance et d'un afficheur.
Le premier but notre jeu est de marquer un maximum de panier en un temps donné, Ensuite si deux machines similaires sont côte à côte il sera possible de s'affronter pour faire le meilleur score.
Liste des composants
- Carte Arduino Nano
- Aluminium
- Afficheur LCD
- Câbles électronique
- Carton
- Panier de basket
- Bois
Code
ici je pose mon code documenté ! #include <Wire.h> #include "rgb_lcd.h" #define MINUTES 60 #define SECONDES 1 rgb_lcd lcd; const int colorR = 0; const int colorG = 255; const int colorB = 0; int tps = 0; int tps_restant = 0; int val = 0; int i =0; unsigned long chrono; unsigned long temps = 600; int tempsmax; // Temps max par manche byte nb_pts1; // NB DE POINTS (0 à 255) joueur 1 int bouton = 2; int points; void setup() { //Initialisation de l'entrée pinMode(bouton, INPUT_PULLUP); // Initialisation du nombre de colonnes et de lignes lcd.begin(16, 2); //Définition de la couleur de l'écran lcd.setRGB(colorR, colorG, colorB); delay(1000); Serial.begin(9600); } void affichetemps(int temps) { byte minutes = temps / 60; byte secondes = temps % 60; int tempsaff = minutes + secondes; //affichage du temps restant à la première colonne et la première ligne car on ne met pas de setCursor lcd.print("Tps restant:"); lcd.print(tempsaff); } void initjeu () { // Temps max 01:00 tempsmax = 60 * SECONDES; // NB DE POINTS (0 à 255) joueur 1 val = 0; //appel de la fonction tempsmax affichetemps(tempsmax); // Initialisation de d'un chrono avec la fonction millis() chrono = millis(); } void loop() { if (millis() - chrono >= temps) { // une seconde est passée tempsmax --; if (tempsmax <= 0) { //Affichage du Score final lcd.print ("Score final : "); lcd.print(val); //appel de la fonction initjeu() initjeu(); } chrono = millis(); } //initialisation de la boucle de jeu for (tps==0; tps<=600; tps+=1) { //calcul du temps restant et affichage tps_restant = 600-tps; lcd.print("Tps restant:"); lcd.print(tps_restant); //Mise du curseur sur la 1ere ligne (réellement la 2eme car commence a 0) lcd.setCursor(0,1); //Lecture du Pin 2(correspond à la variable bouton) points = digitalRead(bouton); //Compteur de points, nous l'avons d'abord défini en INPUT_PULLUP donc on va ajouter un point lorsque l'état sera au niveau bas if (points == LOW) { val+=1; //On rajoute un délai pour prévoir les rebonds des ballons et pas que cela compte 2 fois delay(50); } //Affichage du score en temps réel lcd.print("Score:"); lcd.print(val); delay(100); //Effacage de la valeur du score précédente pour afficher le nouveau score lcd.clear(); } //Affichage du score final lcd.print ("Score final : "); lcd.print(val); //Fin du programme et qu'il ne tourne pas en boucle exit(0); delay (1000); }