Mundarija:
Video: LED Arja o'yini siklon: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Ushbu loyihaning maqsadi Arduino yordamida bolalar uchun interaktiv va ko'ngilochar o'yinni yaratish edi. Men eslayman, siklon arja o'yini yoshligimda eng sevimli arja o'yinlaridan biri edi, shuning uchun men uni takrorlashga qaror qildim. Bu juda oddiy loyiha bo'lib, u Arduino, alohida yoritiladigan LEDlar va tugmachalardan iborat.
O'yinning maqsadi - velosiped nuri ko'rsatilgan (qizil) LEDga etib kelganda to'xtatish. Muvaffaqiyatli bo'lsa, qiyinchilik darajasi oshadi. Agar muvaffaqiyatsiz bo'lsa, yorug'lik aylanishi hozirgi qiyinchilik darajasida qayta boshlanadi.
Bu ko'rsatma mening kodlashim uchun katta manba bo'ldi.
1 -qadam: materiallarni yig'ish
-
Asosiy komponentlar:
- Arduino (men BMTdan foydalandim)
- Alohida adreslanadigan LEDlar chizig'i (men havolani ishlatganman)
- Tugmani bosish (havolani ishlatganman)
- Bosilgan elektron karta (PCB) yoki non paneli
-
Quvvat manbai (men ikkita alohida quvvat manbasidan foydalandim, agar siz ijodiy bo'lsangiz, ulardan birini olib qo'yishingiz mumkin)
- LEDlar uchun 5V 3A
- Arduino uchun 9V 1A
-
Asosiy:
- Elektron korpus (men "Yaxshi niyat" dan yog'och chiroq armaturasini o'zgartirdim)
- LED korpus (men sizning standart devor soatingizni o'zgartirdim va teshik belgilar sifatida daqiqali identifikatorlar yordamida burg'ulash qildim. Agar iloji bo'lsa, burg'ulashni osonlashtirish uchun yog'ochdan foydalaning.)
- Tugma korpusi (men tirsakli PVX trubkadan foydalanardim)
-
Asboblar / Boshqa materiallar:
- Sizning davringiz uchun zaxira simlar
- 10K (kalit uchun ochiladigan qarshilik) va 470 ohmli (LEDlardagi ma'lumot simlari uchun) rezistorlar
- LEDlarni joylashtirish uchun teshiklarni yaratish va armaturada simlarni o'tkazish uchun kerakli teshiklarni yaratish uchun burg'ulash
- Tarmoqni PCB ga lehimlash uchun lehimli temir
- LEDlarni qurilmangizga mahkamlash uchun issiq yopishtiruvchi qurol
- Velcro yoki ramkani birgalikda mustahkamlashning ba'zi vositalari
- Simlar o'tishi uchun burg'ulash qilingan teshiklar uchun ixtiyoriy qistirmalar
2 -qadam: Kodni yuklash
"FastLED" kutubxonasini yuklaganingizga va qo'shganingizga ishonch hosil qiling
Kod yadrosi (void loop) ikkita holatdan iborat: tugmani baland (O'yinni tugatish) va past tugmasini bosish (O'ynash). Foydalanuvchi tugmachani bosgandan so'ng, chiroq o'chirilgan LED manzili markaziy LED manziliga taqqoslanadi. Agar ular bir xil bo'lmasa, barcha chiroqlar ikki marta qizil yonadi va joriy daraja qayta boshlanadi. Agar ular bir xil bo'lsa, cylon (FastLED kutubxonasi skripti) ikki marta ishlaydi, qiyinchilik darajasi oshadi va o'ynash davom etadi. O'yinchi oxirgi darajani mag'lub qilgandan so'ng, silindr sakkizinchi marta ishlaydi va o'yin 1 -darajadan boshlanadi.
// Tsiklon o'yini
#"FastLED.h" ni qo'shing // 50 tagacha #NUM_LEDSni belgilang 40 #DARA_PIN 7ni aniqlang #LED_TYPE WS2811ni belgilang #Rang_O'ZOBINI RGB belgilang // 0-64 oralig'ida #BRIGHTNESSni belgilang 50 // Qiyinchilik darajalarini ta'riflang # EASY 1 #define MEDIUM 2 #define HARD 3 #de_inefine ON_SPEED 4 #define SONIC_SPEED 5 #deffine ROCKET_SPEED 6 #deffine LIGHT_SPEED 7 #define MISSION_IMPOSSIBLE 8 // boshlang'ich qiyinchilik int qiyinchilik = 1; // LEDlar CRGB leds [NUM_LEDS] qatorini aniqlang; // O'yinchi bu turda g'alaba qozondimi? Bu teg qiyinchilik parametrlari uchun ishlatiladi. bool wonThisRound = noto'g'ri; // velosiped chiroqining boshlanish joyi int LEDaddress = 0; // O'yin ishlayaptimi? bool Playing = rost; // Bu birinchi yutuqmi? bool CycleEnded = rost; // tugma tafsilotlari const int buttonPin = 9; int tugmasiState = 0; // Etakchi kutubxona va arduino funktsiyalarini bekor qilishni sozlash () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (Yorqinligi); pinMod (tugmaPin, Kirish); Serial.begin (9600); } // Go'sht va kartoshka // Ikki rejim - O'yinni bekor qilish va bekor qilish () {// GAME END tugmasiState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Foydalanuvchi tugmani bosdi, LED esa yutuqli manzilda to'xtadi. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Qora; } leds [CENTER_LED] = CRGB:: Qizil; LEDlar [LEDaddress] = CRGB:: Yashil; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDadress); // Yoritgich va markaziy chiziq orasidagi masofani topadi, agar (diff == 0) {wonThisRound = true; // O'yinchi, agar (qiyinchilik! = MISSION_IMPOSSIBLE) {uchun (int i = 0; i <2; i ++) {cilon (); }} if (qiyinchilik == MISSION_IMPOSSIBLE) {uchun (int i = 0; i <8; i ++) {cilon (); } qiyinchilik = 0; } oshirishDifficulty (); wonThisRound = noto'g'ri; } boshqa {kechiktirish (1000); uchun (int i = 0; i <2; i ++) {flesh (); }} CycleEnded = noto'g'ri; } LED manzili = 0; kechikish (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {O'ynash = to'g'ri; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Barcha ledlarni o'chiradi} ledlar [CENTER_LED] = CRGB:: Qizil; // Markaziy rangni yashil LEDlarga o'rnatadi [LEDaddress] = CRGB:: Green; // Silindrli LED rangini qizil FastLED.show () ga o'rnatadi; // LEDaddress ++ yorug'lik davrini ishga tushiradi; // Yorug'lik davrini bir vaqtning o'zida bitta LEDga o'rnatadi, agar (LEDadress == NUM_LEDS) {LEDadress = 0; } kechikish (getTime (qiyinchilik)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = rost; }}} // Darajaning parametrlari int getTime (int diff) // {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; tanaffus; ish MEDIUM: timeValue = 80; tanaffus; HARD holati: timeValue = 60; tanaffus; holat ON_SPEED: timeValue = 40; tanaffus; SONIC_SPEED holati: timeValue = 30; tanaffus; ROCKET_SPEED holati: timeValue = 20; tanaffus; LIGHT_SPEED holati: timeValue = 13; tanaffus; MISSION_IMPOSSIBLE holati: timeValue = 7; } return timeValue; // Kechiktirish miqdorini qaytarish} // G'alaba qozongan qiyinchiliklar parametrlarni oshirishni bekor qiladiDifficulty () {if (qiyinchilik! = MISSION_IMPOSSIBLE && wonThisRound) {qiyinchilik ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); kechikish (500); fill_solid (LEDlar, NUM_LEDS, CRGB:: Qora); FastLED.show (); kechikish (500); } // LED Show void foidall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} bo'sh silindr () {statik uint8_t tue = 0; Serial.print ("x"); // Birinchidan, svetodiodni bir tomonga siljiting (int i = 0; i = 0; i--) {// I-chi svetodiodni qizil chiroqlarga o'rnating = CHSV (tus ++, 255, 255); // LEDlarni ko'rsatish FastLED.show (); // endi biz ledlarni ko'rsatganimizdan so'ng, i -chini qora rangga qaytaramiz // leds = CRGB:: Black; fadeall (); // Bir oz kutib turing va biz yana aylanamiz (10); }}
3 -qadam: Armatura ichiga o'rnatish
Men bu bo'limda batafsil ma'lumot bermoqchi emasman. Bu qismda minglab usullar bor va menimcha, siz o'zingizga yoqqan ko'rinishga ega bo'lish uchun ijodiy harakat qilishingiz kerak. Aytish kerakki, soatni LEDlarni joylashtirish uchun ishlatish juda qulay edi, chunki menda burg'ulash belgisi sifatida ishlata oladigan kichik ko'rsatkichlar bor edi. Bundan tashqari, shisha qopqog'i menga stol sifatida ishlatishga imkon beradi.
Velcro LED yoritgichini elektron korpusga mahkamlash uchun ham juda foydali edi. Men Arduino -da velcro ishlatardim. Agar men hech qachon kodni o'zgartirmoqchi bo'lsam, Arduino -ni chiqarib olish juda qulay bo'ldi.
Tavsiya:
FPGA siklon IV DueProLogic - tugma va LED: 5 qadam
FPGA IV sikloni DueProLogic - tugma va LED: Ushbu qo'llanmada biz tashqi LED sxemasini boshqarish uchun FPGA -dan foydalanamiz. Biz quyidagi vazifalarni amalga oshirmoqchimiz (A) LEDni boshqarish uchun FPGA sikloni IV DuePrologic tugmalaridan foydalaning. (B) Fleshli LEDni yoqish & vaqti -vaqti bilan video demo laboratoriyasi o'chiriladi
Arduino siklon o'yini: 5 qadam (rasmlar bilan)
Arduino siklon o'yini: Men hech qachon haqiqiy siklon arcade o'yinini o'ynamaganman, lekin menga reaktsiya vaqti bilan o'ynash g'oyasi yoqadi. Men miniatyuralangan o'yinni ishlab chiqdim. U 32 ta LEDdan iborat bo'lib, aylana hosil qiladi, LEDlar chaser sifatida birin -ketin yonadi. Maqsad - tugmani bosish
POING! - Arduino Arja o'yini!: 3 qadam
POING! - Arduino Arja O'yini !: Biz "UNO R3 loyihasining eng to'liq boshlang'ich to'plami" qismlaridan foydalanadigan PONG uslubidagi arja o'yinini quramiz. To'liq oshkor qilish - Ushbu yo'riqnomada keltirilgan qismlarning aksariyati muallifga Elegoo tomonidan berilgan
Siklon (Arduino LED o'yini): 6 qadam (rasmlar bilan)
Siklon (Arduino LED o'yini): Ushbu darslikda men sizga juda kam kodli yoki tajribasiz LED o'yinini yaratishni o'rgataman! Menda bu fikr bor edi va nihoyat uni yaratishga kirishdim. Bu qiziqarli o'yin, bizga hamma arkada o'yinlarini eslatadi. Boshqa darsliklar ham bor
Arduino LED lazerli arja o'yini: 3 qadam (rasmlar bilan)
Arduino LED lazerli arja o'yini: Men bu ko'rsatmada men LED va yorug'lik datchiklari yordamida lazer arcade o'yinini yasashni ko'rsataman. Kod kiritilgan va uni yaratish uchun sizga ko'p qismlar kerak emas. Men sizga ishni qanday tuzishimni aytmayman, buni o'zingiz qilishingiz kerak! T