Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Jeu de roulette LED

Composants et fournitures

LED (générique)
6 rouges, 2 jaunes, 1 vert
× 9
Interrupteur à bouton-poussoir SparkFun 12mm
× 1
Arduino Nano R3
× 1
En-tête féminin 8 position 1 ligne (0,1")
× 1
DC Barrel Jack
× 1

Outils et machines nécessaires

Routeur CNC

Applications et services en ligne

Arduino IDE

À propos de ce projet

Vidéo :

Présentation

Depuis un certain temps, je voulais créer un jeu simple mais amusant qui ne nécessite qu'une seule personne pour jouer. C'est extrêmement simple, ne prenant qu'un seul Arduino Nano pour l'exécuter. C'est la roulette LED. Le but du jeu est de s'arrêter sur la LED verte en évitant les rouges et jaunes. Cela semble facile à jouer et à fabriquer, et c'est le cas.

Étape 1

Tout d'abord, j'ai commencé par concevoir l'appareil dans Fusion 360. J'ai conçu la plaque avant pour contenir 9 LED, 6 rouges, 2 jaunes et 1 verte. J'ai également fait un espace pour un interrupteur tactile pour aller en bas. J'ai ensuite utilisé mon routeur CNC Millright pour découper les pièces que j'ai conçues.

Étape 2

La mécanique du jeu est la suivante :une lumière "se déplacera" d'avant en arrière entre les deux bords et s'arrêtera chaque fois que vous appuyez sur un bouton. Pour qu'il réagisse immédiatement, j'ai utilisé une interruption. Chaque LED correspond à un index dans un tableau qui est parcouru. l'indice LED actuel obtient également sa propre variable. Il y a aussi un délai entre chaque étape, correspondant à la difficulté. Au démarrage, l'utilisateur sélectionne la difficulté en appuyant sur le bouton pour réduire le délai entre chaque changement de LED. Une fois que la LED correcte est allumée, l'utilisateur peut double-cliquer pour la verrouiller.

Étape 3

J'ai utilisé du papier de verre pour ajouter une belle finition et arrondir les pièces de contreplaqué. Après cela, j'ai utilisé de la colle chaude pour fixer les pièces ensemble.

Conclusions

Désormais, chaque fois que je suis d'humeur à jouer à un jeu simple, que ce soit pour la route ou simplement pour m'éloigner d'un écran, cet appareil me donne un merveilleux répit. Je peux également le rendre multijoueur en éloignant chaque LED du vert d'un certain nombre de points, ce qui fait que la personne qui a obtenu le moins de points à la fin gagne.

Code

  • Code
CodeC/C++
/*Utilisez les broches 2-10Vous pouvez obtenir la bibliothèque TTBOUNCE ici :https://github.com/TOLDOTECHNIK/TTBOUNCE*/#include int delay_time =0;const uint8_t led_array[9] ={ 4,3,5,6,7,8,9,10,11};const uint8_t button =2;uint8_t difficulté =0;uint8_t current_led =0;bool dir_flag =true; //true va à droite, false va à gauchebool game_ended =false;bool is_win =false;bool is_finished_selecting =false;TTBOUNCE b =TTBOUNCE(button);void doubleClick(){ Serial.println("double clic"); is_finished_selecting =vrai; delay_time =floor(500/(difficulté+1)); //Formule :délai (en ms) =500 / (difficulté + 1) Serial.println("difficulté :" + String(delay_time)); sweep();}void click(){ Serial.print("Cliquez | "); digitalWrite(led_array[difficulté], FAIBLE); difficulté++ ; if(difficulté>8){ difficulté =0; } digitalWrite(led_array[difficulté], ÉLEVÉ); Serial.println("La difficulté est :"+Chaîne(difficulté)); delay(100);}void setup(){ Serial.begin(9600); b.attachDoubleClick(doubleClick); b.attacherCliquez(cliquez); b.setActiveLow(); b.enablePullup(); for(int i=0;i<9;i++){ pinMode(led_array[i], OUTPUT); } balayer(); impulsion(); difficulté =0; digitalWrite(led_array[difficulté], ÉLEVÉ); while(!is_finished_selecting){ b.update(); } b.update(); pinMode(bouton, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(button), button_pressed, FALLING); delay(1000);}boucle vide(){ if(game_ended==false){ move_led(); delay(delay_time); } else if(game_ended){ Serial.println(game_ended); Serial.println("Game over"); if(is_win){ Serial.println("vous avez gagné"); for(int i=0; i<5;i++){ pulse(); retard (100); } } balayer(); game_ended =false; is_win =faux ; retard (2000); }}void move_led(){ digitalWrite(led_array[current_led], LOW); if(current_led ==8){ dir_flag =false; current_led -=1; } else if(current_led ==0){ dir_flag =true; current_led +=1; } else if(dir_flag){ current_led +=1; } else if(!dir_flag){ current_led -=1; } digitalWrite(led_array[current_led], HIGH);}void pulse(){ for(int i=0; i<9;i++){ digitalWrite(led_array[i], HIGH); } retard (100); for(int i=0; i<9;i++){ digitalWrite(led_array[i], LOW); }}balayage vide(){ for(int i=0; i<9;i++){ digitalWrite(led_array[i], HIGH); retard (50); digitalWrite(led_array[i], LOW); } for(int i=8; i>=0;i--){ digitalWrite(led_array[i], HIGH); retard (50); digitalWrite(led_array[i], LOW); }}void button_pressed(){ Serial.println("Bouton appuyé sur la LED :"+String(current_led)); game_ended =vrai; if(current_led==4){ is_win =true ; } else if(current_led !=4){ is_win =false; } led_courant =0; retard (500);}

Schémas


Processus de fabrication

  1. Jeu de gyroscope Arduino avec MPU-6050
  2. Dés numériques Arduino
  3. Jeu de roulette DIY 37 LED
  4. Contrôleur de jeu Arduino
  5. Jeu Arduino Nano Tetris sur matrice 16x8 maison
  6. Arduino avec Bluetooth pour contrôler une LED !
  7. Arduino quadrupède
  8. Jeu Pixel Chaser
  9. Contrôle de la luminosité des LED à l'aide de Bolt et Arduino