ENIB 2022 - groupe C : Jeu de la corde : Différence entre versions
(→photo de l'équipe) |
(→Que fait ce projet ?) |
||
Ligne 5 : | Ligne 5 : | ||
==Que fait ce projet ? == | ==Que fait ce projet ? == | ||
Il s’articule comme un jeu du tir à la corde, avec deux boutons pour le jeu, un bouton d'initialisation , un ruban de led et une carte arduino mini. | Il s’articule comme un jeu du tir à la corde, avec deux boutons pour le jeu, un bouton d'initialisation , un ruban de led et une carte arduino mini. | ||
− | A chaque appuie sur le bouton la led se déplace du coté du joueur. L’adversaire fait de même de son côté. | + | A chaque appuie sur le bouton la led se déplace du coté du joueur. L’adversaire fait de même de son côté.</br> |
But du jeu, mettre la led de son côté. | But du jeu, mettre la led de son côté. | ||
Le bouton d'initialisation permet de redémarrer le jeu a zéro. | Le bouton d'initialisation permet de redémarrer le jeu a zéro. |
Version du 17 janvier 2022 à 15:13
photo de l'équipe
Que fait ce projet ?
Il s’articule comme un jeu du tir à la corde, avec deux boutons pour le jeu, un bouton d'initialisation , un ruban de led et une carte arduino mini. A chaque appuie sur le bouton la led se déplace du coté du joueur. L’adversaire fait de même de son côté.</br> But du jeu, mettre la led de son côté. Le bouton d'initialisation permet de redémarrer le jeu a zéro.
Liste des composants
- 3 boutons poussoir
- câbles
- ruban led (ici 48 led)
- arduino d1 mini
- breadboard
- Câble usb micro usb
Code
/* BROCHAGE _________________ / D1 mini \ |[ ]RST TX[ ]| |[ ]A0 -GPIO RX[ ]| |[ ]D0-16 5-D1[X]| - Button Init |[ ]D5-14 4-D2[ ]| - Button 1 |[ ]D6-12 0-D3[ ]| - Ruban led |[ ]D7-13 2-D4[ ]| - Button 2 |[ ]D8-15 GND[X]| - masse du ruban |[ ]3V3 . 5V[X]| - Alim du ruban | +---+ | |_______|USB|_______| Matériel : - des fils dupont. - un ruban de led - un D1 mini - ...*/ //Libraries #include <FastLED.h>//https://github.com/FastLED/FastLED //Constants #define NUM_STRIPS 1 //un seul ruban de led #define NUM_LEDS 48 // nombre de led dans le ruban #define BRIGHTNESS 15 // luminosité #define LED_TYPE WS2812B // type de LED #define COLOR_ORDER RGB//BRG //ordre des couleurs #define FASTLED_ALLOW_INTERRUPTS 0 #define FASTLED_INTERRUPT_RETRY_COUNT 1 #define FRAMES_PER_SECOND 60 #define COOLING 55 #define SPARKING 120 //Parameters const int stripPin = 0; //ruban led D3 const int button_1 = 4; //broche D2 const int button_2 = 2; //broche D4 const int button_init = 5; //broche D1 int i = 23; //initialisation de la possition de la led bool anti_rebond_1 = true; //pour prendre le front montant du bouton 1 bool anti_rebond_2 = true; //pour prendre le front montant du bouton 2 //Variables bool gReverseDirection = false; //Objects CRGB leds[NUM_LEDS]; //initialisation de tout les led void setup() { //Init Serial USB Serial.begin(9600); pinMode(button_1,INPUT_PULLUP); pinMode(button_2,INPUT_PULLUP); pinMode(button_init,INPUT_PULLUP); Serial.println(F("Initialize System")); //Init led strips FastLED.addLeds<LED_TYPE, stripPin, COLOR_ORDER>(leds, NUM_LEDS); FastLED.setBrightness( BRIGHTNESS ); //================================================ //annimation debut //================================================ for(int j = 0; j < NUM_LEDS/2; j++){ //les leds se rejoigne vers la led du milieu leds[j].setRGB(15+j*8, 15+j*8, 255-j*8); leds[NUM_LEDS-1-j].setRGB(15+j*8, 15+j*8, 255-j*8); FastLED.show(); delay(25); } for(int j = 0; j < NUM_LEDS/2; j++){ //les leds se supprime vers la led du milieu leds[j] = CRGB::Black; leds[NUM_LEDS-1-j] = CRGB::Black; FastLED.show(); delay(25); } leds[i].setRGB(255, 0, 255); //pareil mais dans l'autre sens for(int j = 0; j < NUM_LEDS/2; j++){ leds[i+j].setRGB(15+j*8, 255-j*8,15+j*8); leds[i-j].setRGB(15+j*8, 255-j*8, 15+j*8); Serial.println(j); FastLED.show(); delay(25); } for(int j = NUM_LEDS/2; j > 0; j--){ leds[i+j] = CRGB::Black; leds[i-j] = CRGB::Black; FastLED.show(); delay(25); } leds[i].setRGB(255, 0, 255); //allumage de la led du milieu pour le debut leds[i+1].setRGB(255, 0, 255); //allumage de la led du milieu pour le debut FastLED.show(); //affichage sur le ruban de led } void loop() { ledScenario(); } void ledScenario(void ) { /* function ledScenario */ ////LEDS Strip scenario //============ // bouton init if (digitalRead(button_init)==0){ ini();} //============ //============ // bouton 1 if (digitalRead(button_1) == 0 ){ if (anti_rebond_1 == true){ // verifi si le bouton etait deja allumer ou pas i++; anti_rebond_1 = false; if (i>=47){i=47;} // dans le cas ou la led est arriver au bout leds[i].setRGB(255, 0, 255); //avancer la led leds[i-1].setRGB(255, 0, 255); //avancer la led if (i==0){leds[47] = CRGB::Black;} // else {leds[i-2] = CRGB::Black;} // mets l'aute led eteint FastLED.show(); // affiche les modification }} else{ anti_rebond_1 = true; // le bouton n'est pas appuié } //============ //============ // bouton 2 (même principe que le bouton 2 mais dans l'autre sens) if (digitalRead(button_2) == 0 ){ if (anti_rebond_2 == true){ i--; anti_rebond_2 = false; if (i<=0){i=0;} leds[i].setRGB(255, 0, 255); leds[i+1].setRGB(255, 0, 255); if (i==0){leds[1] = CRGB::Black;} else{leds[i+2] = CRGB::Black;} FastLED.show(); Serial.println(i); } } else{ anti_rebond_2 = true; } //============ //=========== // verifie si le joueur 1 a gagné if (i==47){ for(int j = 0; j < NUM_LEDS/2; j++){ //allume en vert le coté du joueur 1 et en rouge celui du joueur 2 leds[j].setRGB(0, 255, 0); //vert leds[NUM_LEDS-1-j].setRGB(255, 0, 0); //rouge FastLED.show(); delay(50); } Serial.println("gagner joueur 1"); loop_infiny(); //va dans une boucle infini } //=========== //=========== // verifie si le joueur 2 a gagné if (i==0){ for(int j = 0; j < NUM_LEDS/2; j++){ //allume en vert le coté du joueur 2 et en rouge celui du joueur 1 leds[NUM_LEDS-1-j].setRGB(0, 255, 0);//vert leds[j].setRGB(255, 0, 0); //rouge FastLED.show(); delay(50); } Serial.println("gagner joueur 2"); loop_infiny();//va dans une boucle infini } delay(0.05); //delai pour anti rebond /* for (int i = 0; i < NUM_LEDS; i++) { //leds[i] = CRGB::Goldenrod; leds[i].setRGB(255, 0, 0); FastLED.show(); delay(10); } for (int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB::Black; FastLED.show(); delay(10); } }*/ } void loop_infiny(){ while (digitalRead(button_init)){ //tant que le bouton init n'est pas activé delay(1); } ini();// } void ini(){ i = 23; for (int j = 0; j < NUM_LEDS; j++) { //eteint tout les lumieres et met la led du milieu allumé leds[j] = CRGB::Black; } leds[i].setRGB(255, 0, 255); leds[i+1].setRGB(255, 0, 255); FastLED.show(); }