ENIB 2022 - groupe C : Jeu de la corde : Différence entre versions
(→Que fait ce projet ?) |
(→Que fait ce projet ?) |
||
Ligne 9 : | Ligne 9 : | ||
Le bouton d'initialisation permet de redémarrer le jeu a zéro.<br> | Le bouton d'initialisation permet de redémarrer le jeu a zéro.<br> | ||
− | [[Fichier:271283375 663960811312375 2742679284613237478 n.jpg| | + | [[Fichier:271283375 663960811312375 2742679284613237478 n.jpg|450px]] |
[[Fichier:271354244 478487547023891 7814625120603058233 n.jpg|250px]] | [[Fichier:271354244 478487547023891 7814625120603058233 n.jpg|250px]] | ||
− | [[Fichier:271493392 1128680897671462 5164840374888400180 n.jpg| | + | [[Fichier:271493392 1128680897671462 5164840374888400180 n.jpg|450px]] |
==Liste des composants== | ==Liste des composants== |
Version du 17 janvier 2022 à 15:16
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é.
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(); }