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 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);
}
