Përmbajtje:
Video: Cyclone LED Arcade Lojë: 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Qëllimi i këtij projekti ishte të krijojë një lojë të thjeshtë duke përdorur një Arduino që do të ishte interaktive dhe argëtuese për fëmijët. Mbaj mend që loja Arcade Cyclone ishte një nga lojërat e mia të preferuara Arcade kur isha më e re, kështu që vendosa ta përsëris atë. Ky është një projekt shumë i thjeshtë që përbëhet nga një Arduino, një varg LED të adresueshëm individualisht dhe një buton.
Qëllimi i lojës është të ndalojë dritën e çiklizmit kur të arrijë LED -in e treguar (të kuq). Nëse është i suksesshëm, niveli i vështirësisë do të rritet. Nëse nuk ka sukses, cikli i dritës do të rifillojë në nivelin e vështirësisë aktuale.
Ky udhëzues ishte një burim i madh për thelbin e kodimit tim.
Hapi 1: Mblidhni Furnizimet
-
Përbërësit kryesorë:
- Arduino (kam përdorur një UNO)
- Vargu i LED -ve individualisht të adresueshëm (kam përdorur lidhjen)
- Shtyp butonin (kam përdorur lidhjen)
- Bordi i qarkut të shtypur (PCB) ose dërrasë buke
-
Furnizimi me energji elektrike (Kam përdorur dy furnizime të veçanta të energjisë, mund të largoheni me një nëse jeni krijues)
- 5V 3A për LED
- 9V 1A për Arduino
-
Kuadër:
- Strehimi elektronik (modifikova një pajisje llambë druri nga Vullneti i Mirë)
- Strehimi LED (kam modifikuar orën tuaj standarde të murit dhe kam shpuar vrima duke përdorur identifikuesit e minutave si shenja vrimash. Përdorni një orë druri nëse është e mundur për ta bërë shpimin më të lehtë.)
- Strehimi i butonit (kam përdorur një tub PVC me bërryl)
-
Mjetet / Materialet e tjera:
- Instalime rezervë për qarkun tuaj
- Rezistenca 10K (rezistencë tërheqëse për ndërprerës) dhe 470 ohm (për telat e të dhënave në LED)
- Stërvitja për krijimin e vrimave për vendosjen e LED -ve tuaj dhe bërjen e çdo vrime të nevojshme në pajisjen tuaj për të kaluar telat
- Hekuri për saldim për bashkimin e qarkut tuaj në një PCB
- Armë me zam të nxehtë për fiksimin e LED -ve në pajisjen tuaj
- Velcro ose disa mjete për të siguruar kornizën së bashku
- Rondelet opsionale për vrimat e shpuara për kalimin e telave
Hapi 2: Ngarko kodin
Sigurohuni që të shkarkoni dhe shtoni bibliotekën "FastLED"
Thelbi i kodit (lak i pavlefshëm) përbëhet nga dy gjendje: butoni i lartë (Fundi i lojës) dhe butoni i ulët (Luajtja). Pasi përdoruesi të shtypë butonin, adresa LED me të cilën ndizet drita krahasohet me adresën e LED qendror. Nëse ato nuk janë të njëjta, të gjitha dritat ndizen të kuqe dy herë dhe niveli aktual rinis. Nëse ato janë të njëjta, ciloni (skenari i bibliotekës FastLED) funksionon dy herë, niveli i vështirësisë rritet dhe rifillimi i lojës. Pasi lojtari arrin nivelin e fundit, ciloni funksionon tetë herë dhe loja rinis në nivelin 1.
// Lojë cikloni
#përfshi "FastLED.h" // deri në 50 #përcakto NUM_LEDS 40 #përcakto CENTER_LED 21 #përcakto DATA_PIN 7 #përcakto LED_TYPE WS2811 #define COLOR_ORDER RGB // diapazoni 0-64 #përcakto BRIGHTNESS 50 // Përkufizimi i niveleve të vështirësisë #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 // Fillimi i vështirësisë në vështirësi = 1; // Përcaktoni grupin e leds CRGB leds [NUM_LEDS]; // A e fitoi lojtari këtë raund? Kjo etiketë përdoret për parametrat e vështirësisë. bool wonThisRound = false; // Vendndodhja fillestare e dritës së çiklizmit në adresën LED = 0; // Po luhet loja? bool Luajtja = e vërtetë; // A është kjo fitorja e parë? bool CycleEnded = e vërtetë; // Detajet e butonit const int buttonPin = 9; butoni int Shteti = 0; // Filloni bibliotekën e udhëhequr dhe funksionet arduino void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.filloj (9600); } // Mishi dhe patatet // Dy mënyra - Luajtja dhe përfundimi i lojës void loop () {// END GAME buttonState = digitalRead (buttonPin); nëse (buttonState == LART) {Duke luajtur = false; // Përdoruesi ka shtypur butonin dhe LED është ndalur në adresën fituese. për (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: E zezë; } leds [CENTER_LED] = CRGB:: E kuqe; leds [LEDadresa] = CRGB:: E gjelbër; FastLED.shfaq (); nëse (CycleEnded = true) {int diff = abs (CENTER_LED - Adresa LED); // Gjen distancën midis led të ndezur dhe qendrës led nëse (diff == 0) {wonThisRound = true; // Lojtari mundi me sukses nivelin nëse (vështirësi! = MISSION_IMPOSSIBLE) {për (int i = 0; i <2; i ++) {cilon (); }} if (vështirësi == MISSION_IMPOSSIBLE) {për (int i = 0; i <8; i ++) {cilon (); } vështirësi = 0; } rritjeDëshirësia (); wonThisRound = false; } else {vonesë (1000); për (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } Adresa LED = 0; vonesë (250); buttonState = digitalRead (butoniPin); nëse (buttonState == LOW) {Duke luajtur = true; }} // LUAJ nëse (Luaj) {për (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: E zezë; // Fik të gjitha leds} leds [CENTER_LED] = CRGB:: E kuqe; // Vendos ngjyrën e qendrës së udhëhequr në leds jeshile [LEDaddress] = CRGB:: Green; // Vendos ngjyrën e çelur të ngjyrës në të kuqe FastLED.show (); // Fillon ciklin e dritës LED adresa ++; // Cakton ciklin e dritës në një led në të njëjtën kohë nëse (LEDadresa == NUM_LEDS) {LEDadresa = 0; } vonesa (getTime (vështirësi)); buttonState = digitalRead (butoniPin); nëse (buttonState == LART) {Duke luajtur = false; CycleEnded = e vërtetë; }}} // Parametrat e nivelit int getTime (int diff) // Kthen vonesën e kohës për lëvizjen e udhëhequr në bazë të vështirësisë {int timeValue = 0; switch (ndrysh) {case EASY: timeValue = 100; pushim; rasti MEDIUM: timeVlera = 80; pushim; rasti HARD: timeVlera = 60; pushim; rasti ON_SPEED: vlera e kohës = 40; pushim; rast SONIC_SPEED: timeValue = 30; pushim; rasti ROCKET_SPEED: timeValue = 20; pushim; rast LIGHT_SPEED: timeValue = 13; pushim; rast MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Ktheni shumën e vonesës} // Vështirësia fituese rrit parametrat void افزایشVështirësi () {nëse (vështirësi! = MISSION_IMPOSSIBLE && wonThisRound) {vështirësi ++; }} // Lost LED Trego void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.shfaq (); vonesë (500); mbushur_solid (leds, NUM_LEDS, CRGB:: E zezë); FastLED.shfaq (); vonesë (500); } // Fitoi LED Trego void fadeall () {për (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {statike uint8_t hue = 0; Serial.print ("x"); // Së pari rrëshqisni led-in në një drejtim për (int i = 0; i = 0; i--) {// Vendosni led-in e kuq në leds të kuq = CHSV (nuancë ++, 255, 255); // Trego leds FastLED.show (); // tani që kemi treguar led -et, rivendosni led -in e zezë // leds = CRGB:: Black; fadeall (); // Prisni pak para se të sillemi rreth e rrotull dhe ta bëni përsëri me vonesë (10); }}
Hapi 3: Instaloni në Fixture
Unë nuk do të hyj në detaje në këtë pjesë. Ka një mijë mënyra të ndryshme për të shkuar në lidhje me këtë pjesë dhe unë mendoj se duhet të jeni krijues për ta bërë atë të duket se si ju pëlqen. Duke u thënë kështu, ora ishte mjaft e përshtatshme për t'u përdorur për strehimin e LED -ve pasi kishte tregues minutë që isha në gjendje t'i përdorja si shenja stërvitore. Gjithashtu, mbulesa e xhamit gjithashtu më lejon ta përdor këtë si tryezë.
Velcro ishte shumë i dobishëm gjithashtu për të siguruar pajisjen LED në pajisjen e strehimit elektronik. Unë gjithashtu përdor velcro në Arduino. Kjo e bëri atë shumë të përshtatshëm për tërheqjen e Arduino nëse dua të modifikoj ndonjëherë kodin.
Recommended:
Mini lojë "Guess the Number" Lojë me mikro: bit: 10 hapa
Mini Makina e lojës "Guess the Number" me Micro: bit: A keni luajtur ndonjëherë " Guess the Number "? Kjo është një makinë lojërash shumë e thjeshtë për t’u ndërtuar që luan " Guess the Number " me ty Ne e projektuam këtë projekt DIY për të inkurajuar lojën fizike dhe për t'i ndihmuar fëmijët të mësojnë programim. Ai përdor një MU
Lojë Microbit Tic Tac Toe Lojë: 4 hapa (me fotografi)
Microbit Tic Tac Toe Lojë: Për këtë projekt, bashkëpunëtori im - @descartez dhe unë krijuam një lojë të mrekullueshme tic tac toe duke përdorur radio funksionalitetin e mikrobitëve. Nëse nuk keni dëgjuar më parë për mikrobit, ata janë një mikrokontrollues i mrekullueshëm i krijuar për t'u mësuar fëmijëve programimin. Ata
Arduino Cyclone Arcade Lojë: 6 hapa
Arduino Cyclone Arcade Lojë: Dritat e ndezura të ndezura! Arduino! Lojë! Çfarë duhet thënë më shumë? Kjo lojë bazohet në lojën Arcade Cyclone, ku lojtari përpiqet të ndalojë një led që lëviz nëpër një rreth në një vend të caktuar
Stackers Arcade Lojë: 6 hapa (me fotografi)
Stackers Arcade Lojë: Përshëndetje djema, sot dua të ndaj me ju këtë lojë të mahnitshme arcade që mund të bëni me një bandë LEDs Ws2812b dhe një mikrokontrollues/FPGA. Ja Stack Overflow - zbatimi ynë harduerik i një loje klasike arcade. Ajo që filloi si një projekt shkollor qui
Arduino LED Laser Arcade Lojë: 3 hapa (me fotografi)
Arduino LED Laser Arcade Lojë: Në këtë udhëzues do të demonstroj se si të krijoj një lojë Laser Arcade duke përdorur sensorë LED dhe dritë. Kodi është i përfshirë dhe nuk keni nevojë për shumë pjesë për ta ndërtuar atë. Unë nuk do t'ju tregoj se si e ndërtoj rastin, ju duhet ta bëni vetë! T