ENIB 2022 - groupe A : Shooter Xtrem

De Les Fabriques du Ponant
Révision datée du 14 janvier 2022 à 15:33 par Zozo (discussion | contributions) (Code)
Aller à : navigation, rechercher

photo avancement projet

270071326 447600900357691 1530611859194850467 n.jpg 270024821 391452386068089 3789371443119279615 n.jpg Sss269612951 629632591698040 3242314274375280698 n.jpg 271783785 268596031880956 6703405487252758256 n.jpg

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

Catégories