ENIB 2022 - groupe A : Leds Spotting
Sommaire
Que fait ce projet ?
Led Spotting est un jeu de comptage en 1 VS 1.
Déroulement du jeu
Pendant un temps déterminé (30 secondes), plusieurs led s'allumeront simultanément toutes les 1.5 secondes. Les deux joueurs devront compter les leds en appuyant sur un bouton devant eux. Le gagnant est le joueur ayant le mieux compté les leds. Si les joueurs ont le même écart par rapport à la réponse, il y a égalité, si les deux joueurs ont bien compté également.
Avancée du projet
Nous avons partagé dans le groupe les tâches suivantes : - Design de la borne d'arcade - Codage du jeu sous Arduino - Codage de l'afficheur LCD sous Arduino - Branchement et test du bon fonctionnement des leds, des boutons poussoirs
Pour le moment, il n'y a pas vraiment de code fonctionnel. Nous avions prévu d'utiliser plusieurs leds RGB mais il est possible que nous changions cela pour une bande RGB, par laquelle nous pourrions contrôler les différentes lumières.
Voici une photo du montage en cours de la boite de notre jeu et de notre banc de test avec nos leds.
Finalité du projet et problèmes rencontrés
Le design de la borne d'arcade est réussit et s'est terminé dans les temps. Nous avons donc utilisé une boîte en carton recouverte d'autocollants de couleurs flashy.
La boîte attire l'œil (voir photo ci-dessous), et, pour nous, elle convient vraiment au style forain.
Liste des composants
- Bande RGB
- Boutons poussoir
- Ecran LCD
- Carte Arduino Nano
Code
//CECI N'EST PAS UN CODE FONCTIONNEL boolean finished = false; boolean started = false; void setup() // début de la fonction setup() { setupLeds(); Serial.begin(9600); // Ouvre le port série à 9600 bauds } // fin de la fonction setup() //***** FONCTION LOOP = Boucle sans fin = cœur du programme ***** // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop() // début de la fonction loop() { if (!started){ waiting(); } else { //faire afficher un truc sur le LCD if (!finished){ int total = random(30,45); int i = total; while (!finished){ int j = random(1,7); allumerRandom(j); i = i-j; if ( i == 0){ finished = true; } } } else { //afficher le bon résultat //afficher le gagnant } while(1){ digitalWrite(10, HIGH); // Met la broche 13 au niveau haut = allume la LED delay(500); // Pause de 500 ms digitalWrite(10, LOW); // Met la broche 13 au niveau bas = éteint la LED delay(500); // Pause 500 ms } } } } // fin de la fonction loop() void waiting (){ while(!started){ Serial.print("waiting...\n"); if (digitalRead(13)==1){ //bouton start détecté started = true; } } } void setupLeds(){ pinMode(12, OUTPUT); // Initialise la broche 12 comme sortie pinMode(11, OUTPUT); // Initialise la broche 11 comme sortie pinMode(10, OUTPUT); // Initialise la broche 10 comme sortie pinMode(9, OUTPUT); // Initialise la broche 9 comme sortie pinMode(8, OUTPUT); // Initialise la broche 8 comme sortie pinMode(7, OUTPUT); // Initialise la broche 7 comme sortie pinMode(6, OUTPUT); // Initialise la broche 6 comme sortie pinMode(5, OUTPUT); // Initialise la broche 5 comme sortie pinMode(4, OUTPUT); // Initialise la broche 4 comme sortie pinMode(3, OUTPUT); // Initialise la broche 3 comme sortie pinMode(1, OUTPUT); // Initialise la broche 1 comme sortie pinMode(0, OUTPUT); // Initialise la broche 0 comme sortie pinMode(14, OUTPUT); // Initialise la broche 14 comme sortie pinMode(15, OUTPUT); // Initialise la broche 15 comme sortie pinMode(16, OUTPUT); // Initialise la broche 16 comme sortie pinMode(17, OUTPUT); // Initialise la broche 17 comme sortie pinMode(18, OUTPUT); // Initialise la broche 18 comme sortie pinMode(19, OUTPUT); // Initialise la broche 19 comme sortie pinMode(20, OUTPUT); // Initialise la broche 20 comme sortie pinMode(21, OUTPUT); // Initialise la broche 21 comme sortie pinMode(13, INPUT); // Initialise la broche 13 comme entrée pinMode(2, INPUT); // Initialise la broche 12 comme entrée for (int i = 0; i <22; i++){ if (i != 2 && i != 13){ digitalWrite(i, HIGH); } } } void allumerRandom(int i){ }