Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

LED-Roulette-Spiel

Komponenten und Verbrauchsmaterialien

LED (generisch)
6 rot, 2 gelb, 1 grün
× 9
SparkFun Drucktastenschalter 12 mm
× 1
Arduino Nano R3
× 1
Female Header 8 Position 1 Row (0.1")
× 1
DC Barrel Jack
× 1

Notwendige Werkzeuge und Maschinen

CNC-Router

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Video:

Übersicht

Schon seit einiger Zeit wollte ich ein einfaches, aber unterhaltsames Spiel entwickeln, das nur von einer Person gespielt werden muss. Es ist extrem einfach, es wird nur ein Arduino Nano benötigt. Es ist LED-Roulette. Das Ziel des Spiels besteht darin, auf der grünen LED anzuhalten und die roten und gelben zu vermeiden. Scheint einfach zu spielen und zu machen, und das ist es auch.

Schritt 1

Zuerst begann ich mit dem Entwerfen des Geräts in Fusion 360. Ich entwarf die Frontplatte so, dass sie 9 LEDs enthält, 6 rote, 2 gelbe und 1 grüne. Ich habe auch einen Platz für einen Taktschalter gemacht, um unten zu gehen. Ich benutzte dann meinen Millright CNC-Router, um die von mir entworfenen Stücke auszuschneiden.

Schritt 2

Die Spielmechanik funktioniert so:Ein Licht "bewegt" sich zwischen den beiden Kanten hin und her und stoppt, wenn eine Taste gedrückt wird. Damit es sofort reagiert, habe ich einen Interrupt verwendet. Jede LED entspricht einem Index in einem Array, das zyklisch durchlaufen wird. auch der aktuelle LED-Index bekommt eine eigene Variable. Es gibt auch eine Verzögerung zwischen jedem Schritt, entsprechend der Schwierigkeit. Beim Start wählt der Benutzer den Schwierigkeitsgrad durch Drücken der Taste aus, um die Verzögerung zwischen jedem Wechsel der LED zu reduzieren. Nachdem die richtige LED aufleuchtet, kann der Benutzer zum Sperren doppelklicken.

Schritt 3

Ich benutzte etwas Sandpapier, um den Sperrholzstücken ein schönes Finish und eine Rundung zu verleihen. Danach habe ich Heißkleber verwendet, um die Stücke zusammen zu befestigen.

Schlussfolgerungen

Wenn ich jetzt Lust habe, ein einfaches Spiel zu spielen, sei es für unterwegs oder einfach nur, um vom Bildschirm wegzukommen, gibt mir dieses Gerät eine wunderbare Atempause. Ich kann es auch im Mehrspielermodus machen, indem ich jede LED um eine bestimmte Anzahl von Punkten von Grün abweiche, sodass die Person gewinnt, die am Ende die wenigsten Punkte hat.

Code

  • Code
CodeC/C++
/*Pins 2-10 verwendenDie TTBOUNCE-Bibliothek erhalten Sie hier: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 Schwierigkeit =0;uint8_t current_led =0;bool dir_flag =true; // true geht nach rechts, false geht nach linksbool game_ended =false;bool is_win =false;bool is_finished_selecting =false;TTBOUNCE b =TTBOUNCE (Schaltfläche);void doubleClick () { Serial.println ( "Doppelklick"); ist_fertige_Auswahl =wahr; delay_time =floor(500/(Schwierigkeit+1)); // Formel:Verzögerung (in ms) =500 / (Schwierigkeit + 1) Serial.println ( "Schwierigkeit:" + String (delay_time)); Sweep ();} ungültiger Klick () { Serial.print ( "Klick | "); digitalWrite (led_array[Schwierigkeit], NIEDRIG); Schwierigkeit++; Wenn (Schwierigkeit> 8) {Schwierigkeit =0; } digitalWrite (led_array[Schwierigkeit], HIGH); Serial.println("Schwierigkeit ist:"+String(Schwierigkeit)); Verzögerung (100);}void setup () { Serial.begin (9600); b.attachDoubleClick(doubleClick); b.attachClick (klicken); b.setActiveLow(); b.enablePullup(); for(int i=0;i<9;i++){pinMode (led_array[i], OUTPUT); } Sweep(); Impuls(); Schwierigkeit =0; digitalWrite (led_array[Schwierigkeit], HOCH); while(!is_finished_selecting){ b.update(); } b.update(); pinMode (Schaltfläche, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (Schaltfläche), button_pressed, FALLING); delay(1000);}void loop(){ if(game_ended==false){ move_led(); Verzögerung (Verzögerungszeit); aufrechtzuerhalten. Sonst if (game_ended) {Serial.println (game_ended); Serial.println ("Spiel vorbei"); if (is_win) {Serial.println ( "Sie haben gewonnen"); for(int i=0; i<5;i++){puls(); Verzögerung (100); } } Sweep(); game_ended =false; is_win =falsch; Verzögerung (2000); }}void move_led () { digitalWrite (led_array [current_led], LOW); if (current_led ==8) { dir_flag =false; aktuelle_led -=1; aufrechtzuerhalten. Sonst if (current_led ==0) { dir_flag =true; aktuelle_led +=1; aufrechtzuerhalten. Sonst 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); } Verzögerung (100); for(int i=0; i<9;i++){digitalWrite(led_array[i], LOW); }}void Sweep () { for (int i =0; i <9; i ++) { digitalWrite (led_array [i], HIGH); Verzögerung (50); digitalWrite(led_array[i], LOW); } for(int i=8; i>=0;i--){digitalWrite(led_array[i], HIGH); Verzögerung (50); digitalWrite(led_array[i], LOW); }}void button_pressed () { Serial.println ( "Taste auf LED gedrückt:"+ String (current_led)); game_ended =wahr; if(current_led==4){ is_win =true; } else if(current_led !=4){ is_win =false; } aktuelle_led =0; Verzögerung(500);}

Schaltpläne


Herstellungsprozess

  1. Arduino-Gyroskop-Spiel mit MPU-6050
  2. Arduino Digital Dice
  3. DIY 37 LED-Roulette-Spiel
  4. Arduino-Gamecontroller
  5. Arduino Nano Tetris-Spiel auf hausgemachter 16x8-Matrix
  6. Arduino mit Bluetooth zur Steuerung einer LED!
  7. Arduino-Vierbeiner
  8. Pixel-Chaser-Spiel
  9. Steuerung der LED-Helligkeit mit Bolt und Arduino
  10. Einzelne LED-Matrix-Arduino Flip Clock