ENIB 2022 - groupe A : Shooter Xtrem : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Liste des composants)
(photo avancement projet)
 
(20 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
==photo de l'équipe==
+
==photo avancement projet==
[[Fichier:270071326_447600900357691_1530611859194850467_n.jpg|400px]]
+
[[Fichier:270071326_447600900357691_1530611859194850467_n.jpg|200px]]
[[Fichier:270024821_391452386068089_3789371443119279615_n.jpg|600px]]
+
[[Fichier:270024821_391452386068089_3789371443119279615_n.jpg|400px]]
 +
[[Fichier:Sss269612951_629632591698040_3242314274375280698_n.jpg|200px]]
 +
[[Fichier:271783785_268596031880956_6703405487252758256_n.jpg|200px]]
 +
[[Fichier:271537616_474585730862874_1246142850589936233_n.jpg|300px]]
 +
[[Fichier:271526522_657575475371940_7368155090033568803_n.jpg|400px]]
  
 
==Que fait ce projet ? ==
 
==Que fait ce projet ? ==
  
 
Shooter Xtrem :
 
Shooter Xtrem :
C'est une borne de basket tel que l'on peut voir dans les fêtes foraine ou bowling,
+
C'est une borne de basket tel que l'on peut voir dans les fêtes foraine ou au bowling,
Qui fonctionne à l'aide d'une photo résistance et d'un afficheur.
+
qui fonctionne à l'aide de 2 feuilles d'aluminium qui auront le même fonctionnement comme un bouton poussoir et d'un afficheur.
  
Le premier but notre jeu est de marquer un maximum de panier en un temps donné,
+
== Explication du projet ==
Ensuite si deux machines similaires sont côte à côte il sera possible de s'affronter pour faire le meilleur score.
+
 
 +
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==
 
==Liste des composants==
  
 
* Carte Arduino Nano
 
* Carte Arduino Nano
* Résistance 10k
+
* Aluminium
* Capteur photo résistance
 
 
* Afficheur LCD
 
* Afficheur LCD
* 7 câbles électronique
+
* Câbles électronique
* Bouton poussoir
+
* Carton
 +
* Panier de basket
 +
* Bois (pour renforcer)
  
 
==Code==
 
==Code==
Ligne 32 : Ligne 43 :
  
 
rgb_lcd lcd;
 
rgb_lcd lcd;
 +
 
const int colorR = 0;
 
const int colorR = 0;
 
const int colorG = 255;
 
const int colorG = 255;
 
const int colorB = 0;
 
const int colorB = 0;
int photocellPin = 0; // the cell and 10K pulldown are connected to a0
 
int photocellReading; // the analog reading from the analog resistor divider
 
 
int tps = 0;
 
int tps = 0;
int tps_restant = 0;
+
int tps_restant = 0;  
 
int val = 0;  
 
int val = 0;  
int i =0;
+
int i =0;
 
unsigned long chrono;
 
unsigned long chrono;
unsigned long temps = 1000;
+
unsigned long temps = 600;
unsigned long tempsled = 500; // Durée d'allumage des leds des joueurs
 
 
int tempsmax; // Temps max par manche
 
int tempsmax; // Temps max par manche
 +
byte nb_pts1;    // NB DE POINTS (0 à 255) joueur 1 
 +
int bouton = 2;
 +
int points; 
  
 
+
void setup()  
void setup(void)  
 
 
{
 
{
  // We'll send debugging information via the Serial monitor
+
    //Initialisation de l'entrée
  // set up the LCD's number of columns and rows:
+
    pinMode(bouton, INPUT_PULLUP);
 +
    // Initialisation du nombre de colonnes et de lignes
 
     lcd.begin(16, 2);
 
     lcd.begin(16, 2);
     lcd.setRGB(colorR, colorG, colorB);
+
    //Définition de la couleur de l'écran
 +
     lcd.setRGB(colorR, colorG, colorB);  
 
     delay(1000);
 
     delay(1000);
 +
    Serial.begin(9600);
 
}
 
}
  
int loop_lumiere()
+
void affichetemps(int temps)  
 
{
 
{
// Mesure la tension sur la broche A0
+
    byte minutes = temps / 60;
  int lumiere = analogRead(A0);
+
    byte secondes = temps % 60;
  // Envoi la mesure au PC pour affichage et attends 250ms
+
    int tempsaff = minutes + secondes;
  lcd.setCursor(13,1);  
+
    //affichage du temps restant à la première colonne et la première ligne car on ne met pas de setCursor
  //Serial.println(lumiere);
+
    lcd.print("Tps restant:");
  lcd.print(lumiere);
+
    lcd.print(tempsaff);
  if (lumiere < 965)
 
    {
 
    val += 1;
 
    }
 
  delay(50);
 
  return lumiere;
 
 
}
 
}
  
void affichetemps(int temps) {
+
void initjeu () {
  byte minutes = temps / 60;
+
    // Temps max 01:00
  byte secondes = temps % 60;
+
    tempsmax = 60 * SECONDES;
  int tempsaff = minutes * 100 + secondes;
+
    // NB DE POINTS (0 à 255) joueur 1
  timer.showNumberDecEx(tempsaff, 0b01000000, true, 4);
+
    val = 0;  
 +
    //appel de la fonction tempsmax
 +
    affichetemps(tempsmax);
 +
    // Initialisation de d'un chrono avec la fonction millis()
 +
    chrono = millis();
 
}
 
}
  
 +
 
 
void loop()  
 
void loop()  
 
{
 
{
  
  if (millis() - chrono >= temps) { // une seconde est passée
+
    if (millis() - chrono >= temps) { // une seconde est passée
 
     tempsmax --;
 
     tempsmax --;
    affichetemps(tempsmax);
 
 
     if (tempsmax <= 0) {
 
     if (tempsmax <= 0) {
    lcd.print ("Score final : ");  
+
    //Affichage du Score final
 +
    lcd.print ("Score final : ");  
 
     lcd.print(val);
 
     lcd.print(val);
 +
    //appel de la fonction initjeu()
 +
    initjeu();
 
     }
 
     }
 
     chrono = millis();
 
     chrono = millis();
 +
    }
  
  for (tps==0; tps<=30; tps+=1){  
+
    //initialisation de la boucle de jeu
      tps_restant = 30-tps;
+
    for (tps==0; tps<=600; tps+=1)
      lcd.print("Tps restant : ");
+
    {  
      lcd.print(tps_restant);
+
        //calcul du temps restant et affichage
      lcd.setCursor(0,1);  
+
        tps_restant = 600-tps;
      lcd.print("Score : ");
+
        lcd.print("Tps restant:");
      lcd.print(val);
+
        lcd.print(tps_restant);
      loop_lumiere();
+
        //Mise du curseur sur la 1ere ligne (réellement la 2eme car commence a 0)
      delay(1000);
+
        lcd.setCursor(0,1);
      lcd.clear();
+
        //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 ("Score final : ");  
 
     lcd.print(val);
 
     lcd.print(val);
     delay (10000);
+
    //Fin du programme et qu'il ne tourne pas en boucle
 +
    exit(0);
 +
     delay (1000);
 
}
 
}
  
 
</pre>
 
</pre>
 +
 +
== Schéma du projet ==
 +
 +
[[Fichier:271493921_998424577409400_5886261970793847143_n.jpg|800px]]
  
 
==Catégories==
 
==Catégories==
  
 
[[Catégorie:Enib2022]]
 
[[Catégorie:Enib2022]]

Version actuelle datée du 14 janvier 2022 à 17:21

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