ENIB 2022 - groupe A : Shooter Xtrem
Révision datée du 14 janvier 2022 à 16:21 par Zozo (discussion | contributions) (→photo avancement projet)
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 au bowling, qui fonctionne à l'aide de 2 feuilles d'aluminium qui auront le même fonctionnement comme un bouton poussoir et d'un afficheur.
Explication du projet
Lorsque le ballon passera par le panier, un morceau de carton avec du papier aluminium collé dessus touchera (il y aura contact) un morceau d'aluminium en dessous. Ceci formera une boucle fermé ce qui aura le même principe qu'un bouton poussoir.
Objectif de notre projet
Le but de notre jeu est de marquer un maximum de panier en un temps donné.
Liste des composants
- Carte Arduino Nano
- Aluminium
- Afficheur LCD
- Câbles électronique
- Carton
- Panier de basket
- Bois (pour renforcer)
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); }