Kazalo:
Video: Ciklonska LED arkadna igra: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Namen tega projekta je bil ustvariti preprosto igro z uporabo Arduina, ki bi bila interaktivna in zabavna za otroke. Spomnim se, da je bila arkadna igra Cyclone ena mojih najljubših arkadnih iger, ko sem bila mlajša, zato sem se odločila, da jo ponovim. To je zelo preprost projekt, ki je sestavljen iz Arduina, niza LED, ki jih je mogoče individualno pritrditi, in gumba.
Cilj igre je ustaviti kolesarsko luč, ko doseže označeno (rdečo) LED. Če bo uspešen, se bo stopnja težavnosti povečala. Če ne uspe, se bo svetlobni cikel znova zagnal na trenutni stopnji težavnosti.
Ta navodila so bila velik vir za jedro mojega kodiranja.
Korak: Zberite zaloge
-
Glavne komponente:
- Arduino (uporabil sem UNO)
- Niz posamično naslovljivih LED (uporabil sem povezavo)
- Potisni gumb (uporabil sem povezavo)
- Tiskano vezje (PCB) ali plošča
-
Napajalnik (uporabil sem dva ločena napajalnika, z enim se vam lahko izognete, če ste ustvarjalni)
- 5V 3A za LED
- 9V 1A za Arduino
-
Okvir:
- Ohišje elektronike (leseno svetilko sem spremenil iz dobre volje)
- LED ohišje (spremenil sem vašo standardno stensko uro in izvrtal luknje z identifikatorji minut kot oznake lukenj. Če je mogoče, za lažje vrtanje uporabite leseno uro.)
- Ohišje gumbov (uporabil sem komolčno PVC cev)
-
Orodja / drugi materiali:
- Rezervna napeljava za vaše vezje
- 10K (spustni upor za stikalo) in 470 ohmov (za podatkovno žico na LED-jih)
- Vrtalnik za ustvarjanje lukenj za namestitev LED in izdelavo vseh potrebnih lukenj v napeljavi za prehod žic
- Spajkalnik za spajkanje vezja na tiskano vezje
- Pištola za vroče lepilo za pritrditev LED na vašo napeljavo
- Velcro ali kakšno drugo sredstvo za pritrditev okvirja skupaj
- Neobvezno tesnilo za luknje, skozi katere lahko preidejo žice
2. korak: Naložite kodo
Prenesite in dodajte knjižnico "FastLED"
Jedro kode (void loop) je sestavljeno iz dveh stanj: visoko pritisnjeni gumb (Konec igre) in nizki gumb (Predvajanje). Ko uporabnik pritisne gumb, se naslov LED, na katerem je bila lučka ustavljena, primerja z naslovom osrednje LED. Če nista enaki, vse lučke dvakrat utripnejo rdeče in trenutna raven se znova zažene. Če sta enaka, se cylon (skript knjižnice FastLED) zažene dvakrat, stopnja težavnosti se poveča in predvajanje se nadaljuje. Ko igralec premaga zadnjo stopnjo, cylon teče osmič in igra se znova zažene na ravni 1.
// Igra ciklona
#include "FastLED.h" // up to 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // range 0-64 #define BRIGHTNESS 50 // Definicija težavnostnih stopenj #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 // Težave pri zagonu int težavnost = 1; // Določimo niz LED diod CRGB LED [NUM_LEDS]; // Ali je igralec zmagal v tem krogu? Ta oznaka se uporablja za parametre težavnosti. bool wonThisRound = false; // Začetna lokacija kolesarske luči int LEDaddress = 0; // Ali igra teče? bool Igranje = res; // Je to prva zmaga? bool CycleEnded = true; // Podrobnosti o gumbu const int buttonPin = 9; int buttonState = 0; // Inicializirajte knjižnico led in arduino funkcije void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (SVETLOST); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Meso in krompir // Dva načina - predvajanje in končanje igre void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Uporabnik je pritisnil gumb in LED se je ustavil na zmagovalnem naslovu. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Črna; } LED diode [CENTER_LED] = CRGB:: Rdeča; LED [LEDaddress] = CRGB:: Zelena; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - naslov LED); // Poišče razdaljo med osvetljenim LED in sredinskim svetilom if (diff == 0) {wonThisRound = true; // Igralec je uspešno premagal raven if (težavnost! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} če (težavnost == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } težavnost = 0; } povečajZaložnost (); wonThisRound = false; } else {zakasnitev (1000); za (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LED naslov = 0; zamuda (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Igranje = res; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // izklopi vse LED diode} LED [CENTER_LED] = CRGB:: Rdeča; // Nastavi srednjo LED barvo na zelene LED diode [LEDaddress] = CRGB:: Green; // Nastavi barvo LED za cikliranje na rdečo FastLED.show (); // Inicializira svetlobni cikel LEDadress ++; // Nastavi svetlobni cikel na eno LED naenkrat, če (LEDaddress == NUM_LEDS) {LEDaddress = 0; } zakasnitev (getTime (težave)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = res; }}} // Parametri ravni int getTime (int diff) // Vrne časovno zakasnitev za osnovo premikanja LED glede na težavnost {int timeValue = 0; stikalo (razlika) {primer EASY: timeValue = 100; zlom; primer SREDNJI: timeValue = 80; zlom; primer HARD: timeValue = 60; zlom; primer ON_SPEED: timeValue = 40; zlom; primer SONIC_SPEED: timeValue = 30; zlom; primer ROCKET_SPEED: timeValue = 20; zlom; primer LIGHT_SPEED: timeValue = 13; zlom; primer MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Vrni znesek zamude} // Zmagovalni parametri povečanja težav povečanje void povečanjeDifficulty () {if (težavnost! = MISSION_IMPOSSIBLE && wonThisRound) {težavnost ++; }} // Lost LED Show void flash () {fill_solid (LED, NUM_LEDS, CRGB:: Red); FastLED.show (); zamuda (500); fill_solid (svetleče diode, NUM_LEDS, CRGB:: črna); FastLED.show (); zamuda (500); } // Zmagala LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t hue = 0; Serial.print ("x"); // Najprej potisnite led v eno smer za (int i = 0; i = 0; i--) {// Nastavite i-to vodilo v rdeče lučke = CHSV (odtenek ++, 255, 255); // Pokaži LED diode FastLED.show (); // zdaj, ko smo prikazali svetleče diode, ponastavimo i'th vodilo v črno // led = CRGB:: Black; fadeall (); // Počakajmo malo, preden se vrnemo in naredimo še enkrat delay (10); }}
Korak: Namestite v Fixture
V tem razdelku se ne bom spuščal v podrobnosti. Obstaja tisoč različnih načinov, kako se lotiti tega dela, in mislim, da bi morali biti ustvarjalni, da bo videti tako, kot vam je všeč. Ob tem je bila ura zelo priročna za namestitev LED diod, saj je imela minutne kazalnike, ki sem jih lahko uporabil kot oznake vrtalnikov. Tudi stekleni pokrov mi omogoča, da to uporabim kot mizo.
Velcro je bil zelo uporaben tudi za pritrditev LED svetilke na ohišje elektronike. Tudi na Arduinu sem uporabil velcro. Zaradi tega je bilo zelo priročno izvleči Arduino, če bom kdaj želel spremeniti kodo.
Priporočena:
Arduino ciklonska igra: 5 korakov (s slikami)
Arduino Cyclone Game: Nikoli nisem igral prave ciklonske arkadne igre, vendar mi je všeč ideja, da se igram z našim reakcijskim časom. Oblikoval sem miniaturno igro. Sestavljen je iz 32 LED, ki tvorijo krog, LED svetijo ena za drugo kot lovilka LED. Cilj je pritisniti gumb
POiNG! - Arduino arkadna igra!: 3 koraki
POiNG! - Arduino Arcade Game !: Zgradili bomo arkadno igro v slogu PONG, ki uporablja dele iz " Najbolj popolnega začetnega kompleta UNO R3 Project " komplet iz Elegoo Inc. Popolno razkritje - Večino delov, ki so bili priloženi temu navodilu, je avtorju priskrbel Elegoo
Arkadna ciklonska arkadna igra: 6 korakov
Arkadna ciklonska arkadna igra: Utripajoče bliskovite luči! Arduino! Igra! Kaj je še treba povedati? Ta igra temelji na arkadni igri Cyclone, kjer igralec poskuša ustaviti LED premikanje po krogu na določenem mestu
Pametna košarkarska arkadna igra z obroči za štetje rezultatov z vgrajeno platformo Evive- Arduino: 13 korakov
Pametna arkadna igra za košarko z obroči za štetje rezultatov z vgrajeno platformo Evive- Arduino: Od vseh iger, ki so na voljo, so najbolj zabavne arkadne igre. Tako smo pomislili, zakaj si tega ne bi naredili sami doma! In tu smo, najbolj zabavna DIY igra, ki bi jo kdaj igrali - DIY Arcade Basketball Game! Ne samo, da je
Arduino LED laserska arkadna igra: 3 koraki (s slikami)
Arduino LED Laser Arcade Game: V tem navodilu bom pokazal, kako narediti lasersko arkadno igro z LED in svetlobnimi senzorji. Koda je vključena in za njeno izdelavo ne potrebujete veliko delov. Ne bom vam povedal, kako zgradim ohišje, to boste morali narediti sami! T