Satura rādītājs:

Ciklona LED arkādes spēle: 4 soļi
Ciklona LED arkādes spēle: 4 soļi

Video: Ciklona LED arkādes spēle: 4 soļi

Video: Ciklona LED arkādes spēle: 4 soļi
Video: Cyclone redemption game side 3 2024, Septembris
Anonim
Image
Image
Instalējiet armatūrā
Instalējiet armatūrā

Šī projekta mērķis bija izveidot vienkāršu spēli, izmantojot Arduino, kas būtu interaktīva un izklaidējoša bērniem. Es atceros, ka Cyclone arkādes spēle bija viena no manām iecienītākajām arkādes spēlēm, kad biju jaunāka, tāpēc es nolēmu to atkārtot. Šis ir ļoti vienkāršs projekts, kas sastāv no Arduino, virknes individuāli adresējamu LED un spiedpogas.

Spēles mērķis ir apturēt riteņbraukšanas gaismu, kad tā sasniedz norādīto (sarkano) LED. Ja tas izdosies, grūtības pakāpe palielināsies. Ja neveiksme, gaismas cikls atsāksies pašreizējā grūtības līmenī.

Šī pamācība bija milzīgs resurss manas kodēšanas kodolam.

1. darbība: apkopojiet materiālus

  • Galvenās sastāvdaļas:

    • Arduino (es izmantoju UNO)
    • Individuāli adresējamu gaismas diožu virkne (es izmantoju saiti)
    • Spied pogu (es izmantoju saiti)
    • Iespiesta shēmas plate (PCB) vai rīvdēlis
    • Barošanas avots (es izmantoju divus atsevišķus barošanas avotus, jūs varat atbrīvoties no viena, ja esat radošs)

      • 5V 3A gaismas diodēm
      • 9V 1A Arduino
  • Sistēma:

    • Elektronikas korpuss (no nemateriālās vērtības pārveidoju koka lampu armatūru)
    • LED korpuss (es modificēju jūsu standarta sienas pulksteni un urbtus caurumus, izmantojot caurumu marķējumu minūšu identifikatorus. Ja iespējams, izmantojiet koka pulksteni, lai atvieglotu urbšanu.)
    • Pogas korpuss (es izmantoju elkoņa PVC cauruli)
  • Instrumenti / citi materiāli:

    • Rezerves vadi jūsu ķēdei
    • 10K (nolaižamais rezistors slēdzim) un 470 omi (datu vadam uz gaismas diodēm) rezistori
    • Urbis urbumu izveidei gaismas diožu novietošanai un visu nepieciešamo caurumu izveide armatūrai, lai izvadītu vadus
    • Lodāmurs jūsu ķēdes lodēšanai pie PCB
    • Karstās līmes pistole gaismas diožu piestiprināšanai pie jūsu armatūras
    • Velcro vai daži līdzekļi rāmja nostiprināšanai kopā
    • Blīves nav obligātas caurumiem, kas urbti vadiem

2. darbība: augšupielādējiet kodu

Noteikti lejupielādējiet un pievienojiet "FastLED" bibliotēku

Koda kodols (tukša cilpa) sastāv no diviem stāvokļiem: augsta poga (Beigt spēli) un zema spiedpoga (Spēlē). Kad lietotājs nospiež pogu, gaismas diodes adrese, kurā gaisma tika apturēta, tiek salīdzināta ar centrālās gaismas diodes adresi. Ja tie nav vienādi, visas gaismas divas reizes mirgo sarkanā krāsā un pašreizējais līmenis tiek atsākts. Ja tie ir vienādi, cilons (FastLED bibliotēkas skripts) tiek palaists divas reizes, grūtības līmenis palielinās un spēle tiek atsākta. Kad spēlētājs pārspēj pēdējo līmeni, cilons skrien astoto reizi un spēle tiek atsākta 1. līmenī.

// Ciklona spēle

#iekļaut "FastLED.h" // līdz 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // diapazons 0-64 #define BRIGHTNESS 50 // Grūtības līmeņu definīcija #define EASY 1 #define MEDIUM 2 #define HARD 3 #define ON_SPEED 4 #define SONIC_SPEED 5 #define ROCKET_SPEED 6 #define LIGHT_SPEED 7 #define MISSION_IMPOSSIBLE 8 // Sākuma grūtības int grūtības = 1; // Definējiet gaismas diožu masīvu CRGB gaismas diodes [NUM_LEDS]; // Vai spēlētājs uzvarēja šajā kārtā? Šo tagu izmanto grūtības parametriem. bool wonThisRound = nepatiess; // Velo gaismas sākuma vieta int LEDadrese = 0; // Vai spēle darbojas? bool Playing = taisnība; // Vai šī ir pirmā uzvara? bool CycleEnded = taisnība; // Pogas detaļas const int buttonPin = 9; int buttonState = 0; // Inicializēt vadītās bibliotēkas un arduino funkcijas void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Sērijas sākums (9600); } // Gaļa un kartupeļi // Divi režīmi - Playing and End Game void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Lietotājs ir nospiedis pogu, un uz uzvarējušās adreses gaismas diode ir apstājusies. par (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: melns; } gaismas diodes [CENTER_LED] = CRGB:: Red; gaismas diodes [LEDadrese] = CRGB:: Zaļa; FastLED.show (); ja (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Atrod attālumu starp iedegtajām gaismas diodēm un centra diodēm, ja (diff == 0) {wonThisRound = true; // Spēlētājs veiksmīgi pārspēja līmeni, ja (grūtības! = MISSION_IMPOSSIBLE) {par (int i = 0; i <2; i ++) {cylon (); }} ja (grūtības == MISSION_IMPOSSIBLE) {par (int i = 0; i <8; i ++) {cylon (); } grūtības = 0; } palielinātDifplicy (); wonThisRound = nepatiess; } cits {kavēšanās (1000); par (int i = 0; i <2; i ++) {flash (); }} CycleEnded = nepatiess; } LEDadrese = 0; kavēšanās (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Spēlē = true; }} // SPĒLĒ, ja (tiek atskaņots) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Izslēdz visas gaismas diodes} gaismas diodes [CENTER_LED] = CRGB:: Red; // Iestata centrālās gaismas krāsu uz zaļām gaismas diodēm [LEDadrese] = CRGB:: Zaļa; // Iestata cilindriskās gaismas krāsu uz sarkanu FastLED.show (); // Inicializē gaismas ciklu LEDadrese ++; // Iestata gaismas ciklu uz vienu gaismas diodi, ja (LEDadrese == NUM_LEDS) {LEDadrese = 0; } kavēšanās (getTime (grūtības)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = patiess; }}} // Līmeņa parametri int getTime (int diff) // Atgriež laika aizkavi vadītās kustības bāzei pēc grūtības {int timeValue = 0; slēdzis (dif.) {gadījums EASY: timeValue = 100; pārtraukums; gadījums VIDĒJS: timeValue = 80; pārtraukums; gadījums HARD: timeValue = 60; pārtraukums; gadījums ON_SPEED: timeValue = 40; pārtraukums; gadījums SONIC_SPEED: timeValue = 30; pārtraukums; gadījums ROCKET_SPEED: timeValue = 20; pārtraukums; gadījums LIGHT_SPEED: timeValue = 13; pārtraukums; gadījums MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Atdot kavējuma summu} // Uzvarēšanas grūtības palielināt parametrus void palielinātDifplicy () {if (grūtības! = MISSION_IMPOSSIBLE && wonThisRound) {grūtības ++; }} // Lost LED Show void flash () {fill_solid (LED, NUM_LEDS, CRGB:: Red); FastLED.show (); kavēšanās (500); fill_solid (gaismas diodes, NUM_LEDS, CRGB:: melns); FastLED.show (); kavēšanās (500); } // Won LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t nokrāsa = 0; Serial.print ("x"); // Vispirms pabīdiet LED vienā virzienā, lai (int i = 0; i = 0; i--) {// Iestatiet pirmo vadību uz sarkanām gaismas diodēm = CHSV (nokrāsa ++, 255, 255); // Rādīt gaismas diodes FastLED.show (); // tagad, kad esam parādījuši gaismas diodes, atiestatiet i ledus uz melno // leds = CRGB:: Black; izbalināt (); // Pagaidiet nedaudz, pirms mēs veicam cilpu, un darām to vēlreiz (10); }}

3. darbība: instalējiet armatūrā

Instalējiet armatūrā
Instalējiet armatūrā
Instalējiet armatūrā
Instalējiet armatūrā

Es šajā sadaļā neiedziļināšos detaļās. Šai daļai ir tūkstošiem dažādu veidu, un es domāju, ka jums vajadzētu būt radošam, lai tas izskatītos tā, kā jums patīk. Tas nozīmē, ka pulksteni bija diezgan ērti izmantot gaismas diožu novietošanai, jo tam bija minūšu rādītāji, kurus es varēju izmantot kā urbuma marķējumu. Arī stikla pārsegs ļauj to izmantot kā galdu.

Velcro bija ļoti noderīgs arī LED stiprinājuma piestiprināšanai pie elektronikas korpusa. Es arī izmantoju velcro uz Arduino. Tas padarīja ļoti ērtu Arduino izvilkšanu, ja es kādreiz vēlos modificēt kodu.

Ieteicams: