Tartalomjegyzék:
Videó: Cyclone LED Arcade Game: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
A projekt célja egy egyszerű játék létrehozása volt egy Arduino segítségével, amely interaktív és szórakoztató lenne a gyerekek számára. Emlékszem, hogy a Cyclone arcade játék volt az egyik kedvenc arcade játékom, amikor fiatalabb voltam, ezért úgy döntöttem, hogy megismétlem. Ez egy nagyon egyszerű projekt, amely egy Arduino -ból, egyénileg címezhető LED -ekből és egy nyomógombból áll.
A játék célja, hogy leállítsa a kerékpáros lámpát, amikor eléri a jelzett (piros) LED -et. Ha sikeres lesz, a nehézségi szint emelkedni fog. Ha sikertelen, a fényciklus újraindul az aktuális nehézségi szinten.
Ez az utasítás hatalmas erőforrás volt a kódolásom magjához.
1. lépés: Gyűjtse össze a kellékeket
-
Fő összetevők:
- Arduino (UNO -t használtam)
- Egyénileg címezhető LED -ek sorozata (linket használtam)
- Nyomógomb (linket használtam)
- Nyomtatott áramköri lap (PCB) vagy kenyérlap
-
Tápegység (két külön tápegységet használtam, lehet, hogy egyet megússz, ha kreatív vagy)
- 5V 3A LED -ekhez
- 9V 1A az Arduino számára
-
Keretrendszer:
- Elektronikai ház (a Goodwill fából készült lámpatartóját módosítottam)
- LED -ház (módosítottam a szabványos falióráját és lyukakat fúrtam a lyukak jelöléseként a perc -azonosítók segítségével. Ha lehetséges, használjon fából készült órát a fúrás megkönnyítése érdekében.)
- Gombház (könyök PVC csövet használtam)
-
Eszközök / egyéb anyagok:
- Tartalék vezetékek az áramkörhöz
- 10K (lehúzható ellenállás a kapcsolóhoz) és 470 ohmos (a LED-ek adatvezetékéhez) ellenállások
- Fúrjon lyukak létrehozásához a LED -ek elhelyezéséhez, és készítsen minden szükséges lyukat a lámpatestben a vezetékek átvezetéséhez
- Forrasztópáka az áramkör PCB -hez való forrasztásához
- Forró ragasztópisztoly a LED -ek rögzítéséhez
- Tépőzáras vagy valamilyen eszköz a keret rögzítésére
- A tömítések opcionálisak a vezetékek átfúrásához használt lyukakhoz
2. lépés: Töltse fel a kódot
Feltétlenül töltse le és adja hozzá a "FastLED" könyvtárat
A kód magja (void loop) két állapotból áll: nyomógomb magas (játék befejezése) és alacsony nyomógomb (lejátszás). Miután a felhasználó megnyomta a gombot, a LED -cím, amelyen a lámpa leállt, összehasonlításra kerül a középső LED -címével. Ha nem azonosak, az összes lámpa kétszer pirosan villog, és az aktuális szint újraindul. Ha ugyanazok, a cylon (FastLED könyvtári szkript) kétszer fut, a nehézségi szint nő, és a játék folytatódik. Miután a játékos legyőzte az utolsó szintet, a cylon nyolcadszor fut, és a játék újraindul az 1. szinten.
// Ciklonjáték
#include "FastLED.h" // akár 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 // A nehézségi szintek meghatározása #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 // Indítási nehézség int nehézség = 1; // LED -ek tömbjének meghatározása CRGB ledek [NUM_LEDS]; // A játékos nyerte ezt a fordulót? Ezt a címkét nehézségi paraméterekhez használják. bool wonThisRound = hamis; // A kerékpáros lámpa kiindulási helye int LEDaddress = 0; // A játék fut? bool Playing = igaz; // Ez az első győzelem? bool CycleEnded = igaz; // A gomb részletei const int gombPin = 9; int buttonState = 0; // Inicializálja a led könyvtárat és az arduino függvényeket void setup () {FastLED.addLeds (ledek, NUM_LEDS); FastLED.setBrightness (FÉNYESSÉG); pinMode (buttonPin, INPUT); Sorozat.kezdet (9600); } // A hús és a burgonya // Két mód - Playing és End Game void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Játék = hamis; // A felhasználó megnyomta a gombot, és a LED leállt a nyertes címen. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } ledek [CENTER_LED] = CRGB:: Piros; ledek [LEDcím] = CRGB:: Zöld; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDcím); // Megtalálja a távolságot a világító led és a középső led között, ha (diff == 0) {wonThisRound = true; // A játékos sikeresen legyőzte a szintet, ha (nehézség! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (nehézség == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } nehézség = 0; } növelésNehézség (); wonThisRound = hamis; } else {delay (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = hamis; } LEDcím = 0; késleltetés (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Játék = igaz; }} // LEJÁTSZÁS, ha (lejátszás) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Kikapcsolja az összes ledet} led [CENTER_LED] = CRGB:: Piros; // A középső LED színét zöld LED -re állítja [LEDcím] = CRGB:: Zöld; // A hengerelt led színét pirosra állítja FastLED.show (); // Inicializálja a fényciklus LED -címét ++; // A fényciklus beállítása egy -egy ledre, ha (LEDcím == NUM_LEDS) {LEDaddress = 0; } delay (getTime (nehézség)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Játék = hamis; CycleEnded = igaz; }}} // Szintparaméterek int getTime (int diff) // Visszaadja a led mozgásbázis késleltetését az {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; szünet; eset MEDIUM: timeValue = 80; szünet; HARD eset: timeValue = 60; szünet; eset ON_SPEED: timeValue = 40; szünet; eset SONIC_SPEED: timeValue = 30; szünet; eset ROCKET_SPEED: timeValue = 20; szünet; LIGHT_SPEED eset: timeValue = 13; szünet; eset MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Visszaadja a késleltetési összeget} // Nyertes nehézség növeli a paramétereket void növekedésDifjúság () {if (nehézség! = MISSION_IMPOSSIBLE && wonThisRound) {nehézség ++; }} // Lost LED Show void flash () {fill_solid (ledek, NUM_LEDS, CRGB:: Piros); FastLED.show (); késleltetés (500); fill_solid (ledek, NUM_LEDS, CRGB:: fekete); FastLED.show (); késleltetés (500); } // Won LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t színárnyalat = 0; Serial.print ("x"); // Először csúsztassa a LED-et egy irányba a következőhöz: (int i = 0; i = 0; i--) {// Állítsa be az első ledet piros ledekre = CHSV (színárnyalat ++, 255, 255); // A LED -ek megjelenítése FastLED.show (); // most, hogy megmutattuk a LED -eket, állítsuk vissza az i led -et fekete -re // leds = CRGB:: Black; fadeall (); // Várjon egy kicsit, mielőtt körbejárnánk, és ismételjük meg késleltetés (10); }}
3. lépés: Telepítse a Fixture -be
Ebben a részben nem részletezem a részleteket. Ezer különböző mód van erre a részre, és szerintem kreatívnak kell lenned ahhoz, hogy úgy nézzen ki, ahogy neked tetszik. Ennek ellenére az órát nagyon kényelmesen lehetett használni a LED -ek elhelyezésére, mivel olyan percjelzőkkel rendelkezett, amelyeket fúrójelként tudtam használni. Ezenkívül az üvegburkolat lehetővé teszi, hogy ezt asztalként is használjam.
A tépőzár nagyon hasznos volt a LED -lámpa rögzítéséhez az elektronika házához. Tépőzárat is használtam az Arduino -n. Ez nagyon kényelmesvé tette az Arduino kihúzását, ha valaha módosítani akarom a kódot.
Ajánlott:
FPGA Cyclone IV DueProLogic Controls Raspberry Pi kamera: 5 lépés
FPGA Cyclone IV DueProLogic Controls Raspberry Pi kamera: Annak ellenére, hogy az FPGA DueProLogic -t hivatalosan az Arduino számára tervezték, az FPGA -t és a Raspberry Pi 4B -t kommunikálhatóvá tesszük. Ebben az oktatóanyagban három feladat valósul meg: (A) Nyomja meg egyszerre a két nyomógombot FPGA a szög forgatásához
FPGA Cyclone IV DueProLogic - Nyomógomb és LED: 5 lépés
FPGA Cyclone IV DueProLogic - Nyomógomb és LED: Ebben az oktatóanyagban az FPGA -t fogjuk használni a külső LED áramkör vezérlésére. A következő feladatokat fogjuk végrehajtani (A) A LED vezérléséhez használja az FPGA Cyclone IV DuePrologic nyomógombjait. (B) Vaku LED világít & időnként ki
FPGA Cyclone IV DueProLogic vezérlő szervomotor: 4 lépés
FPGA Cyclone IV DueProLogic vezérlő szervomotor: Ebben az oktatóanyagban Verilog kódot írunk a szervomotor vezérléséhez. Az SG-90 szervót a Waveshare gyártja. A szervomotor vásárlásakor kaphat egy adatlapot, amely felsorolja az üzemi feszültséget, a maximális nyomatékot és a javasolt teljesítményt
Arduino Cyclone Game: 5 lépés (képekkel)
Arduino Cyclone Game: Soha nem játszottam az igazi ciklon arcade játékkal, de tetszik az ötlet, hogy a reakcióidővel játszunk. Terveztem egy miniatürizált játékot. 32 LED -ből áll, amelyek kört alkotnak, a LED -ek egyenként világítanak, mint egy ledes üldöző. A cél egy gomb megnyomása
Arduino Cyclone Arcade Game: 6 lépés
Arduino Cyclone Arcade Game: Villogó, mutatós fények! Arduino! Játszma, meccs! Mit kell még mondani? Ez a játék a Cyclone arcade játékon alapul, ahol a játékos megpróbálja megállítani a led körüli görgetését egy adott helyen