সুচিপত্র:

সাইক্লোন LED আর্কেড গেম: 4 টি ধাপ
সাইক্লোন LED আর্কেড গেম: 4 টি ধাপ

ভিডিও: সাইক্লোন LED আর্কেড গেম: 4 টি ধাপ

ভিডিও: সাইক্লোন LED আর্কেড গেম: 4 টি ধাপ
ভিডিও: Cyclone redemption game!! 2024, সেপ্টেম্বর
Anonim
Image
Image
ফিক্সারে ইনস্টল করুন
ফিক্সারে ইনস্টল করুন

এই প্রকল্পের উদ্দেশ্য ছিল একটি Arduino ব্যবহার করে একটি সহজ খেলা তৈরি করা যা শিশুদের জন্য ইন্টারেক্টিভ এবং বিনোদনমূলক হবে। আমার মনে আছে সাইক্লোন আর্কেড গেমটি যখন আমি ছোট ছিলাম তখন আমার প্রিয় আর্কেড গেমগুলির মধ্যে একটি ছিল, তাই আমি এটি প্রতিলিপি করার সিদ্ধান্ত নিয়েছি। এটি একটি খুব সহজ প্রকল্প যা একটি Arduino, পৃথকভাবে adressable LEDs এর স্ট্রিং এবং একটি পুশ বোতাম নিয়ে গঠিত।

গেমটির লক্ষ্য হল নির্দেশিত (লাল) LED তে পৌঁছানোর সময় সাইক্লিং লাইট বন্ধ করা। সফল হলে অসুবিধার মাত্রা বাড়বে। অসফল হলে, হালকা চক্র বর্তমান অসুবিধা পর্যায়ে পুনরায় চালু হবে।

এই নির্দেশযোগ্য আমার কোডিং এর মূল জন্য একটি বিশাল সম্পদ ছিল।

ধাপ 1: সরবরাহ সংগ্রহ করুন

  • প্রধান উপাদান:

    • আরডুইনো (আমি একটি ইউএনও ব্যবহার করেছি)
    • পৃথকভাবে ঠিকানাযোগ্য LEDs এর স্ট্রিং (আমি লিঙ্ক ব্যবহার করেছি)
    • পুশ বোতাম (আমি লিঙ্ক ব্যবহার করেছি)
    • প্রিন্টেড সার্কিট বোর্ড (পিসিবি) বা ব্রেডবোর্ড
    • পাওয়ার সাপ্লাই (আমি দুটি পৃথক পাওয়ার সাপ্লাই ব্যবহার করেছি, যদি আপনি সৃজনশীল হন তবে আপনি একটি দিয়ে চলে যেতে পারেন)

      • LED এর জন্য 5V 3A
      • Arduino এর জন্য 9V 1A
  • ফ্রেমওয়ার্ক:

    • ইলেকট্রনিক্স হাউজিং (আমি গুডউইল থেকে একটি কাঠের ল্যাম্প ফিক্সচার সংশোধন করেছি)
    • এলইডি হাউজিং (আমি আপনার আদর্শ প্রাচীর ঘড়ি পরিবর্তন করেছি এবং ছিদ্র চিহ্ন হিসাবে মিনিট শনাক্তকারী ব্যবহার করে ছিদ্র করা হয়েছে। যদি সম্ভব হয় তাহলে কাঠের ঘড়ি ব্যবহার করুন।
    • বোতাম হাউজিং (আমি একটি কনুই পিভিসি পাইপ ব্যবহার করেছি)
  • সরঞ্জাম / অন্যান্য উপকরণ:

    • আপনার সার্কিটের জন্য অতিরিক্ত ওয়্যারিং
    • 10K (সুইচের জন্য পুল-ডাউন রোধ) এবং 470 ওহম (LEDs এ ডেটা তারের জন্য) প্রতিরোধক
    • আপনার এলইডি রাখার জন্য গর্ত তৈরির জন্য এবং তারের মধ্য দিয়ে যাওয়ার জন্য আপনার ফিক্সচারের প্রয়োজনীয় গর্ত তৈরি করার জন্য ড্রিল করুন
    • একটি পিসিবি আপনার সার্কিট সোল্ডারিং জন্য লোহা সোল্ডারিং
    • আপনার দৃi়তার জন্য LEDs সুরক্ষিত করার জন্য গরম আঠালো বন্দুক
    • ভেলক্রো বা একসঙ্গে কাঠামো সুরক্ষিত করার কিছু উপায়
    • তারের মধ্য দিয়ে যাওয়ার জন্য ছিদ্র করা গ্যাসকেট alচ্ছিক

ধাপ 2: কোড আপলোড করুন

নিশ্চিত করুন যে আপনি "FastLED" লাইব্রেরি ডাউনলোড এবং যোগ করেছেন

কোডের মূল (অকার্যকর লুপ) দুটি অবস্থা নিয়ে গঠিত: পুশ বোতাম উচ্চ (শেষ খেলা) এবং পুশ বোতাম নিম্ন (বাজানো)। একবার ব্যবহারকারী বোতাম টিপলে, যে LED ঠিকানায় আলো বন্ধ করা হয়েছিল সেটি কেন্দ্রের LED এর ঠিকানার সাথে তুলনা করা হয়। যদি তারা একই না হয়, সমস্ত লাইট দুবার লাল হয়ে যায় এবং বর্তমান স্তরটি পুনরায় চালু হয়। যদি তারা একই হয়, সিলন (FastLED লাইব্রেরি স্ক্রিপ্ট) দুবার চালায়, অসুবিধা স্তর বৃদ্ধি পায় এবং পুনরায় শুরু হয়। একবার খেলোয়াড় শেষ স্তরে আঘাত করলে, সিলন অষ্টম বার চালায় এবং খেলাটি 1 স্তরে পুনরায় শুরু হয়।

// সাইক্লোন গেম

#অন্তর্ভুক্ত করুন "FastLED.h" // 50 পর্যন্ত #সংজ্ঞায়িত করুন NUM_LEDS 40 #সংজ্ঞা CENTER_LED 21 #সংজ্ঞায়িত DATA_PIN 7 #Define LED_TYPE WS2811 #define COLOR_ORDER RGB // range 0-64 #define BRIGHTNESS 50 // অসুবিধা স্তরের সংজ্ঞা #সংজ্ঞা সহজ 1 #ডিফাইন মিডিয়াম 2 #হার্ড 3 #ডিফাইন ON_SPEED 4 #ডিফাইন SONIC_SPEED 5 #ডিফাইন ROCKET_SPEED 6 #ডিফাইন LIGHT_SPEED 7 #ডিফাইন MISSION_IMPOSSIBLE 8 // শুরু করতে অসুবিধা = 1; // সিআরজিবি এলইডি [NUM_LEDS] এর অ্যারে সংজ্ঞায়িত করুন; // খেলোয়াড় কি এই রাউন্ড জিতেছে? এই ট্যাগটি অসুবিধা পরামিতিগুলির জন্য ব্যবহৃত হয়। bool wonThisRound = মিথ্যা; // সাইকেলিং লাইটের অবস্থান শুরু হচ্ছে LEDaddress = 0; // খেলা চলছে? বুল বাজানো = সত্য; // এটা কি প্রথম জয়? বুল CycleEnded = true; // বোতাম বিশদ const int buttonPin = 9; int buttonState = 0; // নেতৃত্বাধীন লাইব্রেরি শুরু করুন এবং আরডুইনো ফাংশন অকার্যকর সেটআপ () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (উজ্জ্বলতা); pinMode (buttonPin, INPUT); Serial.begin (9600); } // মাংস এবং আলু // দুটি মোড - প্লেয়িং অ্যান্ড এন্ড গেম ভয়েড লুপ () {// END GAME buttonState = digitalRead (buttonPin); যদি (buttonState == HIGH) {বাজানো = মিথ্যা; // ব্যবহারকারী বোতাম টিপেছে, এবং বিজয়ী ঠিকানায় LED বন্ধ হয়ে গেছে। জন্য (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: কালো; } leds [CENTER_LED] = CRGB:: লাল; leds [LEDaddress] = CRGB:: সবুজ; FastLED.show (); যদি (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // আলোকিত নেতৃত্ব এবং কেন্দ্র নেতৃত্বের মধ্যে দূরত্ব খুঁজে পায় যদি (diff == 0) {wonThisRound = true; // খেলোয়াড় সফলভাবে লেভেলকে পরাজিত করে যদি (অসুবিধা! }} যদি (অসুবিধা == MISSION_IMPOSSIBLE) {জন্য (int i = 0; i <8; i ++) {cylon (); } অসুবিধা = 0; } বৃদ্ধি অসুবিধা (); wonThisRound = মিথ্যা; } অন্যথায় {বিলম্ব (1000); জন্য (int i = 0; i <2; i ++) {flash (); }} CycleEnded = মিথ্যা; } LEDaddress = 0; বিলম্ব (250); buttonState = digitalRead (buttonPin); যদি (buttonState == LOW) {বাজানো = সত্য; }} // খেললে যদি (বাজানো হয়) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // সব leds বন্ধ করে দেয়} leds [CENTER_LED] = CRGB:: Red; // সেট সেন্টার নেতৃত্বাধীন রঙ সবুজ লেড [LEDaddress] = CRGB:: সবুজ; // সাইক্লিং নেতৃত্বাধীন রঙ লাল FastLED.show () সেট করে; // আলো চক্র LEDaddress ++ শুরু করে; // একটি সময়ে আলোর চক্রকে একটি নেতৃত্বে সেট করে যদি (LEDaddress == NUM_LEDS) {LEDaddress = 0; } বিলম্ব (getTime (অসুবিধা)); buttonState = digitalRead (buttonPin); যদি (buttonState == HIGH) {বাজানো = মিথ্যা; CycleEnded = সত্য; }}} // লেভেল প্যারামিটার int getTime (int diff) // নেতৃত্বাধীন মুভমেন্ট বেসের জন্য সময় বিলম্ব প্রদান করে {int timeValue = 0; সুইচ (diff) {ক্ষেত্রে সহজ: timeValue = 100; বিরতি; কেস মিডিয়াম: টাইম ভ্যালু = 80; বিরতি; কেস হার্ড: টাইম ভ্যালু = 60; বিরতি; কেস ON_SPEED: timeValue = 40; বিরতি; কেস SONIC_SPEED: timeValue = 30; বিরতি; কেস ROCKET_SPEED: timeValue = 20; বিরতি; কেস LIGHT_SPEED: timeValue = 13; বিরতি; ক্ষেত্রে MISSION_IMPOSSIBLE: timeValue = 7; } রিটার্ন টাইম ভ্যালু; // বিলম্বের পরিমাণ ফেরত দিন // // জিততে অসুবিধা বৃদ্ধি প্যারামিটার অকার্যকর বৃদ্ধি ডিফিলিটি () {যদি (অসুবিধা! }} // হারিয়ে যাওয়া LED শো অকার্যকর ফ্ল্যাশ () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); বিলম্ব (500); fill_solid (leds, NUM_LEDS, CRGB:: Black); FastLED.show (); বিলম্ব (500); } // জিতেছে LED শো অকার্যকর fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} অকার্যকর সিলন () {স্ট্যাটিক uint8_t হিউ = 0; সিরিয়াল.প্রিন্ট ("x"); // প্রথমে নেতৃত্বকে এক দিকে স্লাইড করুন (int i = 0; i = 0; i--) {// সেট করুন i'th নেতৃত্বে লাল লেডস = CHSV (হিউ ++, 255, 255); // দেখান leds FastLED.show (); // এখন যে আমরা লেডস দেখিয়েছি, আমি রিসেট করবো আমি কালো হয়েছি // leds = CRGB:: কালো; fadeall (); // আমরা চারপাশে লুপ করার আগে একটু অপেক্ষা করুন এবং এটি আবার বিলম্ব করুন (10); }}

ধাপ 3: ফিক্সারে ইনস্টল করুন

ফিক্সারে ইনস্টল করুন
ফিক্সারে ইনস্টল করুন
ফিক্সারে ইনস্টল করুন
ফিক্সারে ইনস্টল করুন

আমি এই বিভাগে বিশদ বিবরণে যাচ্ছি না। এই অংশটি নিয়ে যাওয়ার হাজারটা ভিন্ন উপায় আছে এবং আমি মনে করি আপনার সৃজনশীল হওয়া উচিত যাতে আপনি এটি পছন্দ করেন। বলা হচ্ছে, এলইডি থাকার জন্য ঘড়িটি বেশ সুবিধাজনক ছিল কারণ এতে মিনিটের সূচক ছিল যা আমি ড্রিল চিহ্ন হিসাবে ব্যবহার করতে সক্ষম ছিলাম। এছাড়াও, কাচের কভারটি আমাকে এটি একটি টেবিল হিসাবে ব্যবহার করতে দেয়।

ইলেকট্রনিক্স হাউজিং ফিক্সচারের এলইডি ফিক্সচার সুরক্ষিত করার জন্য ভেলক্রো খুব দরকারী ছিল। আমি আরডুইনোতে ভেলক্রো ব্যবহার করেছি। যদি আমি কখনও কোডটি সংশোধন করতে চাই তবে এটি আরডুইনোকে টেনে তোলার জন্য এটি খুব সুবিধাজনক করে তুলেছে।

প্রস্তাবিত: