فهرست مطالب:

Cyclone LED Arcade بازی: 4 مرحله
Cyclone LED Arcade بازی: 4 مرحله

تصویری: Cyclone LED Arcade بازی: 4 مرحله

تصویری: Cyclone LED Arcade بازی: 4 مرحله
تصویری: Left 4 Dead Witch Anime Expo 2012 2024, دسامبر
Anonim
Image
Image
در Fixture نصب کنید
در Fixture نصب کنید

هدف این پروژه ایجاد یک بازی ساده با استفاده از آردوینو بود که برای کودکان تعاملی و سرگرم کننده باشد. من به یاد دارم که بازی Cyclone یکی از بازی های مورد علاقه من در جوانی بود ، بنابراین تصمیم گرفتم آن را تکرار کنم. این یک پروژه بسیار ساده است که شامل یک آردوینو ، رشته ای از LED های قابل تنظیم و یک دکمه فشاری است.

هدف بازی متوقف کردن چراغ دوچرخه سواری است وقتی به LED نشان داده شده (قرمز) رسید. در صورت موفقیت ، سطح دشواری افزایش می یابد. در صورت عدم موفقیت ، چرخه نور در سطح دشواری فعلی دوباره راه اندازی می شود.

این دستورالعمل منبع بزرگی برای هسته برنامه نویسی من بود.

مرحله 1: وسایل را جمع آوری کنید

  • اجزای اصلی:

    • آردوینو (من از UNO استفاده کردم)
    • رشته ای از LED های آدرس پذیر جداگانه (من از پیوند استفاده کردم)
    • دکمه فشار (من از پیوند استفاده کردم)
    • برد مدار چاپی (PCB) یا تخته نان
    • منبع تغذیه (من از دو منبع تغذیه جداگانه استفاده کردم ، اگر خلاق باشید ممکن است با یکی از آنها کنار بیایید)

      • 5V 3A برای LED ها
      • 9V 1A برای آردوینو
  • چارچوب:

    • مسکن الکترونیکی (من لامپ چوبی را از سرقفلی تغییر دادم)
    • محفظه LED (من ساعت دیواری استاندارد شما را تغییر دادم و با استفاده از شناسه های دقیقه به عنوان نشانه های سوراخ سوراخ کردم. در صورت امکان از ساعت چوبی استفاده کنید تا حفاری آسان تر شود.)
    • محفظه دکمه (من از لوله PVC آرنج استفاده کردم)
  • ابزارها / سایر مواد:

    • سیم کشی یدکی برای مدار خود
    • مقاومت های 10K (مقاومت کشویی برای سوئیچ) و 470 اهم (برای سیم داده روی LED ها)
    • برای ایجاد سوراخ هایی برای قرار دادن LED های خود و ایجاد هرگونه سوراخ لازم در وسایل خود برای عبور سیم از طریق آن ، مته کنید
    • لحیم کاری برای لحیم کاری مدار شما به PCB
    • تفنگ چسب حرارتی برای ثابت نگه داشتن LED ها در وسایل شما
    • Velcro یا برخی از وسایل برای ایمن سازی چارچوب با هم
    • واشرها اختیاری برای سوراخ های ایجاد شده برای عبور سیم ها هستند

مرحله 2: بارگذاری کد

مطمئن شوید که کتابخانه "FastLED" را بارگیری و اضافه کرده اید

هسته کد (حلقه خالی) شامل دو حالت است: دکمه بالا (پایان بازی) و دکمه پایین (پخش). هنگامی که کاربر دکمه را فشار می دهد ، آدرس LED که چراغ روشن شده است با آدرس LED مرکزی مقایسه می شود. اگر یکسان نباشند ، همه چراغ ها دو بار قرمز چشمک می زنند و سطح فعلی دوباره راه اندازی می شود. اگر یکسان باشند ، سیلون (اسکریپت کتابخانه FastLED) دو بار اجرا می شود ، سطح دشواری افزایش می یابد و پخش مجدد از سر گرفته می شود. هنگامی که بازیکن آخرین سطح را می زند ، سیلون هشتمین بار اجرا می شود و بازی در سطح 1 شروع می شود.

// بازی Cyclone

#شامل "FastLED.h" // تا 50 #تعریف NUM_LEDS 40 #تعریف CENTER_LED 21 #تعریف DATA_PIN 7 #تعریف LED_TYPE WS2811 #تعریف COLOR_ORDER RGB // محدوده 0-64 #تعریف روشنایی 50 // تعریف سطوح دشواری #تعریف EASY 1 #تعریف MEDIUM 2 #تعریف HARD 3 #تعریف ON_SPEED 4 #تعریف SONIC_SPEED 5 #تعریف ROCKET_SPEED 6 #تعریف LIGHT_SPEED 7 #تعریف MISSION_IMPOSSIBLE 8 // شروع مشکل در سختی = 1 ؛ // تعریف آرایه led های CRGB leds [NUM_LEDS] ؛ // آیا بازیکن در این دور برنده شد؟ این تگ برای پارامترهای سختی استفاده می شود. bool wonThisRound = false؛ // محل شروع چراغ دوچرخه سواری در LED LED = 0؛ // آیا بازی اجرا می شود؟ bool Playing = true؛ // آیا این اولین برد است؟ bool CycleEnded = true؛ // جزئیات دکمه const int buttonPin = 9؛ int buttonState = 0؛ // راه اندازی کتابخانه led و توابع arduino void setup () {FastLED.addLeds (leds، NUM_LEDS) ؛ FastLED.setBrightness (BRIGHTNESS) ؛ pinMode (buttonPin ، INPUT) ؛ Serial.begin (9600)؛ } // گوشت و سیب زمینی // دو حالت - بازی و پایان بازی void loop () {// END GAME buttonState = digitalRead (buttonPin) ؛ if (buttonState == HIGH) {پخش = false؛ // کاربر دکمه را فشار داده است و LED روی آدرس برنده متوقف شده است. برای (int i = 0؛ i <NUM_LEDS؛ i ++) {leds = CRGB:: سیاه؛ } leds [CENTER_LED] = CRGB:: قرمز ؛ leds [LEDaddress] = CRGB:: سبز؛ FastLED.show ()؛ if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress)؛ // فاصله بین led روشن و مرکز led را پیدا می کند اگر (diff == 0) {wonThisRound = true؛ // پخش کننده با موفقیت سطح را (دشواری! = MISSION_IMPOSSIBLE) {برای (int i = 0؛ i <2؛ i ++) {cylon ()؛ }} if (دشواری == MISSION_IMPOSSIBLE) {برای (int i = 0؛ i <8؛ i ++) {cylon ()؛ } دشواری = 0؛ } افزایشDifficulty ()؛ wonThisRound = false؛ } else {تاخیر (1000) ؛ برای (int i = 0؛ i <2؛ i ++) {flash ()؛ }} CycleEnded = false؛ } آدرس LED = 0؛ تأخیر (250) ؛ buttonState = digitalRead (buttonPin) ؛ if (buttonState == LOW) {پخش = true؛ }} // PLAYING if (پخش) {برای (int i = 0 ؛ i <NUM_LEDS؛ i ++) {leds = CRGB:: سیاه ؛ // همه leds} leds [CENTER_LED] = CRGB:: Red را خاموش می کند. // رنگ led مرکزی را به leds سبز تنظیم می کند [LEDaddress] = CRGB:: Green؛ // رنگ led دوچرخه سواری را به قرمز تنظیم می کند FastLED.show ()؛ // راه اندازی چرخه نور LED++؛ // چرخه نور را به طور همزمان به یک led تنظیم می کند اگر (LEDaddress == NUM_LEDS) {LEDaddress = 0؛ } تاخیر (getTime (مشکل)) ؛ buttonState = digitalRead (buttonPin) ؛ if (buttonState == HIGH) {پخش = false؛ CycleEnded = true؛ }}} // پارامترهای سطح int getTime (int diff) // تأخیر زمانی را برای پایه حرکت led بر اساس دشواری برمی گرداند {int timeValue = 0؛ switch (diff) {case EASY: timeValue = 100؛ زنگ تفريح؛ مورد MEDIUM: timeValue = 80 ؛ زنگ تفريح؛ مورد HARD: timeValue = 60؛ زنگ تفريح؛ مورد ON_SPEED: timeValue = 40 ؛ زنگ تفريح؛ مورد SONIC_SPEED: timeValue = 30 ؛ زنگ تفريح؛ مورد ROCKET_SPEED: timeValue = 20 ؛ زنگ تفريح؛ مورد LIGHT_SPEED: timeValue = 13 ؛ زنگ تفريح؛ مورد MISSION_IMPOSSIBLE: timeValue = 7 ؛ } return timeValue ؛ // مقدار تاخیر را برگردانید // // مشکل برنده شدن پارامترها را افزایش می دهد void افزایش مشکل () {if (دشواری! = MISSION_IMPOSSIBLE && wonThisRound) {مشکل ++؛ }} // LED از دست رفته نمایش فلش خالی () {fill_solid (leds، NUM_LEDS، CRGB:: قرمز)؛ FastLED.show ()؛ تأخیر (500) ؛ fill_solid (leds ، NUM_LEDS ، CRGB:: مشکی) ؛ FastLED.show ()؛ تأخیر (500) ؛ } // برنده 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") ؛ // ابتدا led را در یک جهت برای (int i = 0؛ i = 0؛ i--) {// لامپ های قرمز را به رنگ قرمز = CHSV (رنگ ++ ، 255 ، 255) تنظیم کنید ؛ // نمایش leds FastLED.show ()؛ // اکنون که led ها را نشان دادیم ، i'th led را به رنگ سیاه بازگردانید // leds = CRGB:: Black؛ fadeall ()؛ // کمی صبر کنید تا دور خود را باز کرده و دوباره آن را با تاخیر انجام دهید (10). }}

مرحله 3: در Fixture نصب کنید

در Fixture نصب کنید
در Fixture نصب کنید
در Fixture نصب کنید
در Fixture نصب کنید

من در این قسمت به جزئیات نمی پردازم. هزار راه مختلف برای انجام این قسمت وجود دارد و من فکر می کنم شما باید خلاق باشید تا ظاهر آن به گونه ای باشد که دوست دارید. با توجه به این ، استفاده از ساعت برای قرار دادن LED ها بسیار مناسب بود زیرا دارای نشانگرهای دقیقه ای بود که می توانم از آنها به عنوان علامت مته استفاده کنم. همچنین روکش شیشه ای به من اجازه می دهد از این به عنوان میز استفاده کنم.

چسب زنی برای محکم کردن چراغ LED به وسایل محفظه الکترونیکی بسیار مفید بود. من در آردوینو از velcro استفاده کردم. اگر بخواهم کد را تغییر دهم ، کشیدن Arduino بسیار راحت است.

توصیه شده: