Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

LED-roulettespel

Componenten en benodigdheden

LED (generiek)
6 rood, 2 geel, 1 groen
× 9
SparkFun Drukknopschakelaar 12 mm
× 1
Arduino Nano R3
× 1
Vrouwelijke kop 8 positie 1 rij (0,1")
× 1
DC Barrel Jack
× 1

Benodigde gereedschappen en machines

CNC-router

Apps en online services

Arduino IDE

Over dit project

Video:

Overzicht

Ik wilde al een hele tijd een eenvoudig, maar leuk spel maken waarvoor slechts één persoon het spel hoeft te spelen. Het is uiterst eenvoudig, er is slechts één Arduino Nano nodig om het uit te voeren. Het is LED-roulette. Het doel van het spel is om te stoppen op de groene LED en de rode en gele te vermijden. Het lijkt gemakkelijk om te spelen en te maken, en dat is het ook.

Stap 1

Eerst begon ik met het ontwerpen van het apparaat in Fusion 360. Ik ontwierp de frontplaat met 9 LED's, 6 rode, 2 gele en 1 groene. Ik heb ook een ruimte gemaakt voor een tactschakelaar om aan de onderkant te gaan. Vervolgens heb ik de my Millright CNC-router gebruikt om de stukken uit te snijden die ik heb ontworpen.

Stap 2

Het spelmechanisme werkt als volgt:een lampje "beweegt" heen en weer tussen de twee randen en stopt wanneer er op een knop wordt gedrukt. Om het onmiddellijk te laten reageren, heb ik een interrupt gebruikt. Elke LED komt overeen met een index in een array die wordt doorlopen. de huidige LED-index krijgt ook zijn eigen variabele. Er is ook een vertraging tussen elke stap, die overeenkomt met de moeilijkheidsgraad. Bij het opstarten selecteert de gebruiker de moeilijkheidsgraad door op de knop te drukken om de vertraging tussen elke verandering van de LED te verminderen. Nadat de juiste LED is opgelicht, kan de gebruiker dubbelklikken om deze te vergrendelen.

Stap 3

Ik gebruikte wat schuurpapier om een ​​mooie afwerking en afronding aan de multiplex stukken toe te voegen. Daarna heb ik hete lijm gebruikt om de stukken aan elkaar te bevestigen.

Conclusies

Nu, wanneer ik in de stemming ben om een ​​eenvoudig spel te spelen, of het nu voor onderweg is of gewoon om weg te komen van een scherm, geeft dit apparaat me een geweldige uitstel. Ik kan er ook een multiplayer van maken door elke LED een bepaald aantal punten van groen te houden, zodat de persoon die aan het einde het minste aantal punten heeft, wint.

Code

  • Code
CodeC/C++
/*Gebruik pinnen 2-10U kunt de TTBOUNCE-bibliotheek hier verkrijgen: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 moeilijkheidsgraad =0;uint8_t current_led =0;bool dir_flag =true; //true gaat naar rechts, false gaat naar linksbool game_ended =false;bool is_win =false;bool is_finished_selecting =false;TTBOUNCE b =TTBOUNCE(knop);void doubleClick(){ Serial.println("dubbelklik"); is_finished_selecting =waar; delay_time =verdieping (500/(moeilijkheidsgraad+1)); //Formule:vertraging (in ms) =500 / (moeilijkheid + 1) Serial.println ("moeilijkheidsgraad:" + String (vertragingstijd)); sweep();}void click(){ Serial.print("Klik | "); digitalWrite (led_array [moeilijkheid], LAAG); moeilijkheid++; if(moeilijkheid>8){ moeilijkheidsgraad =0; } digitalWrite(led_array[moeilijkheid], HOOG); Serial.println("Moeilijkheid is:"+String(moeilijkheid)); delay(100);}void setup(){ Serial.begin(9600); b.bijvoegenDoubleClick(doubleClick); b.attachClick(klik); b.setActiveLow(); b.enablePullup(); for(int i=0;i<9;i++){ pinMode(led_array[i], OUTPUT); } vegen(); puls(); moeilijkheid =0; digitalWrite(led_array[moeilijkheid], HOOG); while(!is_finished_selecting){ b.update(); } b.update(); pinMode (knop, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(button), button_pressed, FALLING); delay(1000);}void loop(){ if(game_ended==false){ move_led(); vertraging (vertragingstijd); } else if(game_ended){ Serial.println(game_ended); Serial.println("Game over"); if(is_win){ Serial.println("je hebt gewonnen"); for(int i=0; i<5;i++){ pulse(); vertraging (100); } } vegen(); game_ended =onwaar; is_win =onwaar; vertraging (2000); }}void move_led(){ digitalWrite(led_array[current_led], LOW); if(current_led ==8){ dir_flag =false; huidige_led -=1; } else if(current_led ==0){ dir_flag =true; huidige_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); } vertraging(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); vertraging (50); digitalWrite(led_array[i], LOW); } for(int i=8; i>=0;i--){ digitalWrite(led_array[i], HIGH); vertraging (50); digitalWrite(led_array[i], LOW); }}void button_pressed(){ Serial.println("Knop ingedrukt op LED:"+String(current_led)); game_ended =waar; if(current_led==4){ is_win =true; } else if(current_led!=4){ is_win =false; } huidige_led =0; vertraging(500);}

Schema's


Productieproces

  1. Arduino-gyroscoopspel met MPU-6050
  2. Arduino digitale dobbelstenen
  3. DIY 37 LED Roulette Game
  4. Arduino-gamecontroller
  5. Arduino Nano Tetris-spel op zelfgemaakte 16x8 Matrix
  6. Arduino met Bluetooth om een ​​LED te bedienen!
  7. Arduino Quadruped
  8. Pixel Chaser-game
  9. LED-helderheid regelen met Bolt en Arduino
  10. Enkele LED Matrix Arduino Flip Clock
  11. Arduino RGB-kleurenmixer