ENIB 2022 - groupe A : Shooter Xtrem

De Les Fabriques du Ponant
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 271537616 474585730862874 1246142850589936233 n.jpg 271526522 657575475371940 7368155090033568803 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 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);
}

Schéma du projet

271493921 998424577409400 5886261970793847143 n.jpg

Catégories