Obsah:
Video: Arkádová hra Cyclone LED: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Záměrem tohoto projektu bylo vytvořit jednoduchou hru pomocí Arduina, která by byla interaktivní a zábavná pro děti. Pamatuji si, že Cyclone arkádová hra byla jednou z mých oblíbených arkádových her, když jsem byl mladší, a tak jsem se rozhodl ji replikovat. Jedná se o velmi jednoduchý projekt, který se skládá z Arduina, řady individuálně adresovatelných LED a tlačítka.
Cílem hry je zastavit cyklistické světlo, jakmile dosáhne indikované (červené) LED. Pokud bude úspěšný, úroveň obtížnosti se zvýší. Pokud není úspěšný, světelný cyklus se restartuje na aktuální úrovni obtížnosti.
Tento instruktáž byl obrovským zdrojem jádra mého kódování.
Krok 1: Shromážděte zásoby
-
Hlavní komponenty:
- Arduino (použil jsem UNO)
- Řetězec individuálně adresovatelných LED diod (použil jsem odkaz)
- Tlačítko (použil jsem odkaz)
- Deska s plošnými spoji (PCB) nebo nepájivá deska
-
Napájecí zdroj (použil jsem dva samostatné napájecí zdroje, pokud jste kreativní, jeden vám může uniknout)
- 5V 3A pro LED diody
- 9V 1A pro Arduino
-
Rámec:
- Pouzdro elektroniky (upravil jsem dřevěné svítidlo od Goodwill)
- Pouzdro LED (vaše standardní nástěnné hodiny a vyvrtané otvory jsem upravil pomocí identifikátorů minut jako označení otvorů. Pokud je to možné, použijte dřevěné hodiny, aby bylo vrtání snazší.)
- Pouzdro na knoflíky (použil jsem loketní trubku z PVC)
-
Nástroje / Ostatní materiály:
- Náhradní kabeláž pro váš obvod
- Rezistory 10K (stahovací odpor pro spínač) a 470 ohmů (pro datový vodič na LED)
- Vrták pro vytváření otvorů pro umístění vašich LED diod a vytváření potřebných otvorů ve vašem svítidle pro průchod vodičů
- Páječka pro pájení obvodu na desku plošných spojů
- Horká lepicí pistole pro zajištění LED diod k vašemu svítidlu
- Suchý zip nebo nějaké prostředky k zajištění rámce dohromady
- Těsnění volitelně pro otvory vyvrtané pro průchod drátů
Krok 2: Nahrajte kód
Nezapomeňte stáhnout a přidat knihovnu „FastLED“
Jádro kódu (prázdná smyčka) se skládá ze dvou stavů: vysoké tlačítko (Ukončit hru) a nízké tlačítko (Přehrávání). Jakmile uživatel stiskne tlačítko, porovná se adresa LED, na které bylo světlo zastaveno, s adresou středové diody. Pokud nejsou stejné, všechna světla dvakrát bliknou červeně a aktuální úroveň se restartuje. Pokud jsou stejné, cylon (skript knihovny FastLED) se spustí dvakrát, úroveň obtížnosti se zvýší a přehrávání se obnoví. Jakmile hráč porazí poslední úroveň, Cylon běží osmýkrát a hra se restartuje na úrovni 1.
// Cyklónová hra
#include "FastLED.h" // až 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // rozsah 0-64 #define BRIGHTNESS 50 // Definice úrovní obtížnosti #define SNADNÝ 1 #definovat STŘEDNÍ 2 #definovat TVRDÉ 3 #definovat ON_SPEED 4 #definovat SONIC_SPEED 5 #definovat ROCKET_SPEED 6 #definovat LIGHT_SPEED 7 #definovat MISSION_IMPOSSIBLE 8 // Počáteční obtížnost int obtížnost = 1; // Definujte pole LED CRGB LED [NUM_LEDS]; // Vyhrál hráč toto kolo? Tato značka se používá pro parametry obtížnosti. bool wonThisRound = false; // Počáteční poloha cyklistického světla int LEDaddress = 0; // Hra běží? bool Playing = true; // Je to první výhra? bool CycleEnded = true; // Podrobnosti o tlačítku const int buttonPin = 9; int buttonState = 0; // Inicializace led knihovny a arduino funkcí void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Maso a brambory // Dva režimy - hraní a ukončení hry void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Uživatel stiskl tlačítko a LED se zastavila na výherní adrese. pro (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } leds [CENTER_LED] = CRGB:: Red; leds [LEDaddress] = CRGB:: Green; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Najde vzdálenost mezi rozsvícenou LED a středovou LED, pokud (diff == 0) {wonThisRound = true; // Hráč úspěšně porazil úroveň if (obtížnost! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (obtížnost == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } obtížnost = 0; } increaseDifficulty (); wonThisRound = false; } else {zpoždění (1000); pro (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } Adresa LED = 0; zpoždění (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Playing = true; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Vypne všechny LED}} LED [CENTER_LED] = CRGB:: Red; // Nastaví barvu středové LED na zelené LED [LEDaddress] = CRGB:: Green; // Nastaví válcovanou barvu LED na červenou FastLED.show (); // Inicializuje světelný cyklus LEDadresa ++; // Nastaví světelný cyklus vždy na jednu LED, pokud (LEDadresa == NUM_LEDS) {LEDadresa = 0; } delay (getTime (obtížnost)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = true; }}} // Parametry úrovně int getTime (int diff) // Vrátí časové zpoždění pro pohybovou základnu LED podle obtížnosti {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; přestávka; případ MEDIUM: timeValue = 80; přestávka; case HARD: timeValue = 60; přestávka; případ ON_SPEED: timeValue = 40; přestávka; případ SONIC_SPEED: timeValue = 30; přestávka; případ ROCKET_SPEED: timeValue = 20; přestávka; případ LIGHT_SPEED: timeValue = 13; přestávka; případ MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Vrácení částky zpoždění} // Vítězná obtížnost zvýšení parametrů neplatné zvýšeníDifficulty () {if (obtížnost! = MISSION_IMPOSSIBLE && wonThisRound) {obtížnost ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); zpoždění (500); fill_solid (leds, NUM_LEDS, CRGB:: Black); FastLED.show (); zpoždění (500); } // Won 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"); // Nejprve posuňte LED v jednom směru pro (int i = 0; i = 0; i--) {// Nastavte i-tu LED na červené LED = CHSV (odstín ++, 255, 255); // Zobrazit LED FastLED.show (); // teď, když jsme ukázali ledky, resetujte i'th LED na černé // LEDky = CRGB:: Black; fadeall (); // Chvíli počkejte, než se smyčkujeme a provedeme to znovu, zpoždění (10); }}
Krok 3: Instalace v aplikaci Fixture
V této sekci nebudu zacházet do podrobností. Existuje tisíc různých způsobů, jak tuto část projít, a myslím, že byste měli být kreativní, aby to vypadalo, jak se vám to líbí. Jak již bylo řečeno, hodiny bylo docela vhodné použít pro umístění LED diod, protože měly minutové indikátory, které jsem mohl použít jako značení vrtáků. Skleněný kryt mi také umožňuje použít jej jako stůl.
Velcro byl také velmi užitečný pro upevnění LED svítidla k tělesu elektroniky. Na Arduino jsem použil i suchý zip. Díky tomu bylo velmi výhodné vytáhnout Arduino, pokud bych někdy chtěl kód upravit.
Doporučuje:
POiNG! - Arkádová hra Arduino !: 3 kroky
POiNG! - Arkádová hra Arduino !: Budeme stavět arkádovou hru ve stylu PONG, která využívá díly z " Nejkompletnějšího startovacího balíčku UNO R3 Project " souprava od společnosti Elegoo Inc. Úplné zveřejnění - většina dílů dodaných k tomuto Instructable byla poskytnuta autorovi Elegoo
Vertikální arkádová hra s integrovaným LED displejem PIXEL: 11 kroků (s obrázky)
Vertikální bartopová arkáda s integrovaným LED displejem PIXEL: **** Aktualizováno novým softwarem červenec 2019, podrobnosti zde ****** Arkádová arkádová sestava s jedinečnou funkcí, kterou LED markýza mění tak, aby odpovídala vybrané hře. Umění postav na bocích skříně jsou vyřezávané laserem a nelepí
Arkádová hra Arduino Cyclone: 6 kroků
Arkádová hra Arduino Cyclone: Blinky zářivá světla! Arduino! Hra! Co víc je třeba říci? Tato hra vychází z arkádové hry Cyclone, kde se hráč snaží zastavit rolování LED diod kolem kruhu na konkrétním místě
Arkádová hra Stackers: 6 kroků (s obrázky)
Arkádová hra Stackers: Ahoj kluci, dnes se s vámi chci podělit o tuto úžasnou arkádovou hru, kterou můžete vytvořit pomocí spousty LED diod Ws2812b a mikrokontroléru/FPGA. Hle Stack Overflow - naše hardwarová implementace klasické arkádové hry. Co začalo jako školní projekt
Laserová arkádová hra Arduino LED: 3 kroky (s obrázky)
Laserová arkádová hra Arduino LED: V tomto návodu předvedu, jak pomocí laserových a světelných senzorů vyrobit laserovou arkádovou hru. Kód je součástí dodávky a k jeho sestavení nepotřebujete mnoho dílů. Neřeknu vám, jak ten případ stavím, to si budete muset vyrobit sami! T