विषयसूची:

चक्रवात एलईडी आर्केड गेम: 4 कदम
चक्रवात एलईडी आर्केड गेम: 4 कदम

वीडियो: चक्रवात एलईडी आर्केड गेम: 4 कदम

वीडियो: चक्रवात एलईडी आर्केड गेम: 4 कदम
वीडियो: INCREDIBLE!! I put a ARCADE ROOM inside a shoe cabinet 2024, सितंबर
Anonim
Image
Image
स्थिरता में स्थापित करें
स्थिरता में स्थापित करें

इस परियोजना का उद्देश्य एक Arduino का उपयोग करके एक सरल गेम बनाना था जो बच्चों के लिए इंटरैक्टिव और मनोरंजक हो। मुझे याद है कि जब मैं छोटा था तब साइक्लोन आर्केड गेम मेरे पसंदीदा आर्केड गेम में से एक था, इसलिए मैंने इसे दोहराने का फैसला किया। यह एक बहुत ही सरल परियोजना है जिसमें एक Arduino, व्यक्तिगत रूप से पता करने योग्य एलईडी की स्ट्रिंग और एक पुश बटन शामिल है।

खेल का लक्ष्य संकेतित (लाल) एलईडी तक पहुंचने पर साइकिल की रोशनी को रोकना है। सफल होने पर कठिनाई का स्तर बढ़ जाएगा। असफल होने पर, प्रकाश चक्र वर्तमान कठिनाई स्तर पर पुनः आरंभ होगा।

यह निर्देशयोग्य मेरी कोडिंग के मूल के लिए एक बहुत बड़ा संसाधन था।

चरण 1: आपूर्ति इकट्ठा करें

  • प्रमुख तत्व:

    • Arduino (मैंने एक UNO का उपयोग किया)
    • व्यक्तिगत रूप से पता करने योग्य एल ई डी की स्ट्रिंग (मैंने लिंक का इस्तेमाल किया)
    • पुश बटन (मैंने लिंक का इस्तेमाल किया)
    • मुद्रित सर्किट बोर्ड (पीसीबी) या ब्रेडबोर्ड
    • बिजली की आपूर्ति (मैंने दो अलग-अलग बिजली आपूर्ति का इस्तेमाल किया, यदि आप रचनात्मक हैं तो आप एक से दूर हो सकते हैं)

      • एल ई डी के लिए 5V 3A
      • Arduino के लिए 9V 1A
  • ढांचा:

    • इलेक्ट्रॉनिक्स आवास (मैंने सद्भावना से लकड़ी के दीपक स्थिरता को संशोधित किया)
    • एलईडी आवास (मैंने आपकी मानक दीवार घड़ी और ड्रिल किए गए छेदों को छेद चिह्नों के रूप में मिनट पहचानकर्ताओं का उपयोग करके संशोधित किया है। ड्रिलिंग को आसान बनाने के लिए यदि संभव हो तो लकड़ी की घड़ी का उपयोग करें।)
    • बटन हाउसिंग (मैंने कोहनी पीवीसी पाइप का इस्तेमाल किया)
  • उपकरण / अन्य सामग्री:

    • आपके सर्किट के लिए अतिरिक्त वायरिंग
    • 10K (स्विच के लिए पुल-डाउन रेसिस्टर) और 470 ओम (एल ई डी पर डेटा वायर के लिए) रेसिस्टर्स
    • अपने एल ई डी को रखने के लिए छेद बनाने के लिए ड्रिल करें और तारों को पार करने के लिए अपनी स्थिरता में कोई भी आवश्यक छेद बनाएं
    • अपने सर्किट को पीसीबी में टांका लगाने के लिए टांका लगाने वाला लोहा
    • एल ई डी को अपनी स्थिरता में सुरक्षित करने के लिए गर्म गोंद बंदूक
    • वेल्क्रो या ढांचे को एक साथ सुरक्षित करने के कुछ साधन
    • तारों के माध्यम से गुजरने के लिए ड्रिल किए गए छेद के लिए गैस्केट वैकल्पिक

चरण 2: कोड अपलोड करें

सुनिश्चित करें कि आप "FastLED" लाइब्रेरी डाउनलोड करें और जोड़ें

कोड के मूल (शून्य लूप) में दो अवस्थाएँ होती हैं: पुश बटन हाई (एंड गेम) और पुश बटन लो (प्लेइंग)। एक बार जब उपयोगकर्ता बटन दबाता है, तो जिस एलईडी पते पर रोशनी बंद हो जाती है, उसकी तुलना केंद्र एलईडी के पते से की जाती है। यदि वे समान नहीं हैं, तो सभी बत्तियाँ दो बार लाल चमकती हैं और वर्तमान स्तर पुनः आरंभ होता है। यदि वे समान हैं, तो सिलोन (फास्टलेड लाइब्रेरी स्क्रिप्ट) दो बार चलती है, कठिनाई स्तर बढ़ जाता है, और खेलना फिर से शुरू हो जाता है। एक बार जब खिलाड़ी अंतिम स्तर को हरा देता है, तो सिलोन आठवीं बार चलता है और खेल स्तर 1 पर फिर से शुरू होता है।

// चक्रवात खेल

#शामिल "FastLED.h" // 50 तक # परिभाषित करें NUM_LEDS 40 #CENTER_LED 21 परिभाषित करें #DATA_PIN 7 परिभाषित करें #LED_TYPE WS2811 # परिभाषित करें COLOR_ORDER RGB // रेंज 0-64 # परिभाषित करें ब्राइटनेस 50 // कठिनाई स्तरों की परिभाषा # परिभाषित करें 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 // कठिनाई शुरू करना int कठिनाई = 1; // सीआरजीबी एलईडी [NUM_LEDS] एलईडी की सरणी को परिभाषित करें; // क्या खिलाड़ी ने यह राउंड जीता? इस टैग का उपयोग कठिनाई मापदंडों के लिए किया जाता है। बूल वोनथिसराउंड = झूठा; // साइकलिंग लाइट का आरंभिक स्थान int LEDaddress = 0; // खेल चल रहा है? बूल बजाना = सच; // क्या यह पहली जीत है? बूल साइकिल एंडेड = सच; // बटन विवरण कॉन्स्ट इंट बटनपिन = 9; इंट बटनस्टेट = 0; // एलईडी लाइब्रेरी और आर्डिनो फ़ंक्शंस को शून्य सेटअप () { FastLED.addLeds (एलईडी, NUM_LEDS) शुरू करें; FastLED.setBrightness (ब्राइटनेस); पिनमोड (बटनपिन, इनपुट); सीरियल.बेगिन (९६००); } // मांस और आलू अगर (बटनस्टेट == हाई) {बजाना = झूठा; // उपयोगकर्ता ने बटन दबाया है, और एलईडी जीतने वाले पते पर रुक गया है। के लिए (int i = 0; i < NUM_LEDS; i++) { LEDs = CRGB::Black; } एलईडी [CENTER_LED] = CRGB:: लाल; एल ई डी [एलईडीड्रेस] = सीआरजीबी:: हरा; FastLED.शो (); अगर (साइकिलएंडेड = ट्रू) {इंट डिफ = एब्स (CENTER_LED - LEDaddress); // अगर (diff == 0) {winThisRound = true; // खिलाड़ी सफलतापूर्वक स्तर को हरा देता है यदि (कठिनाई! = MISSION_IMPOSSIBLE) { के लिए (int i = 0; i <2; i ++) { cylon (); } } अगर (कठिनाई == MISSION_IMPOSSIBLE) { के लिए (int i = 0; i <8; i++) { cylon (); } कठिनाई = 0; } वृद्धि कठिनाई (); वोनथिसराउंड = झूठा; } और {देरी (1000); के लिए (इंट आई = 0; आई < 2; आई ++) {फ्लैश (); } } CycleEnded = असत्य; } एलईडीएड्रेस = 0; देरी (250); बटनस्टेट = डिजिटलरेड (बटनपिन); अगर (बटनस्टेट == कम) {बजाना = सच; } } // खेलना अगर (बजाना) { के लिए (int i = 0; i <NUM_LEDS; i ++) {LEDs = CRGB:: ब्लैक; // सभी एल ई डी को बंद कर देता है } एल ई डी [CENTER_LED] = CRGB:: Red; // हरे रंग की एलईडी के लिए केंद्र का नेतृत्व किया रंग [LEDaddress] = CRGB:: हरा; // सिलिंग एलईडी रंग को लाल FastLED.show() पर सेट करता है; // प्रकाश चक्र LEDaddress++ आरंभ करता है; // एक समय में एक के लिए प्रकाश चक्र सेट करता है अगर (LEDaddress == NUM_LEDS) {LEDaddress = 0; } देरी (गेटटाइम (कठिनाई)); बटनस्टेट = डिजिटलरेड (बटनपिन); अगर (बटनस्टेट == हाई) {बजाना = झूठा; साइकिल समाप्त = सच; } } } // लेवल पैरामीटर्स इंट गेटटाइम (इंट डिफरेंशियल) // कठिनाई के आधार पर एलईडी मूवमेंट बेस के लिए रिटर्न टाइम डिले {इंट टाइमवैल्यू = 0; स्विच (diff) {केस EASY: टाइमवैल्यू = १००; टूटना; मामला मध्यम: समयमान = ८०; टूटना; केस हार्ड: टाइमवैल्यू = ६०; टूटना; मामला ON_SPEED: समयमान = ४०; टूटना; मामला SONIC_SPEED: समयमान = 30; टूटना; मामला ROCKET_SPEED: समयमान = 20; टूटना; मामला LIGHT_SPEED: समयमान = 13; टूटना; मामला MISSION_IMPOSSIBLE: समयमान = 7; } वापसी समय मान;// विलंब राशि लौटाएं} } } // लॉस्ट एलईडी शो शून्य फ्लैश () {fill_solid (एलईडी, NUM_LEDS, CRGB:: Red); FastLED.शो (); देरी (500); फिल_सॉलिड (एल ई डी, NUM_LEDS, सीआरजीबी:: ब्लैक); FastLED.शो (); देरी (500); } // जीता एलईडी शो शून्य फ़ेडॉल () {के लिए (int i = 0; i <NUM_LEDS; i ++) {LEDs । } } शून्य सिलोन () {स्थिर uint8_t रंग = 0; सीरियल.प्रिंट ("एक्स"); // पहले एलईडी को एक दिशा में स्लाइड करें (int i = 0; i = 0; i--) {// i'th को लाल लेड पर सेट करें = CHSV (ह्यू ++, 255, 255); // एलईडी दिखाएँ FastLED.show (); // अब जब हमने एलईडी दिखा दी है, तो i'th एलईडी को काले रंग में रीसेट करें // एलईडी = सीआरजीबी:: ब्लैक; फ़ेडॉल (); // हम चारों ओर लूप करने से पहले थोड़ी देर प्रतीक्षा करें और इसे फिर से करें देरी (10); } }

चरण 3: स्थिरता में स्थापित करें

स्थिरता में स्थापित करें
स्थिरता में स्थापित करें
स्थिरता में स्थापित करें
स्थिरता में स्थापित करें

मैं इस खंड में विवरण में नहीं जा रहा हूँ। इस भाग के बारे में जाने के लिए एक हजार अलग-अलग तरीके हैं और मुझे लगता है कि आपको इसे पसंद करने के लिए रचनात्मक होना चाहिए। कहा जा रहा है, एल ई डी के आवास के लिए घड़ी का उपयोग करना बहुत सुविधाजनक था क्योंकि इसमें मिनट संकेतक थे जिन्हें मैं ड्रिल चिह्नों के रूप में उपयोग करने में सक्षम था। इसके अलावा, कांच का आवरण भी मुझे इसे एक टेबल के रूप में उपयोग करने देता है।

इलेक्ट्रॉनिक्स आवास स्थिरता के लिए एलईडी स्थिरता को सुरक्षित करने के लिए वेल्क्रो बहुत उपयोगी था। मैंने Arduino पर वेल्क्रो का भी इस्तेमाल किया। अगर मैं कभी भी कोड को संशोधित करना चाहता हूं तो इससे Arduino को बाहर निकालना बहुत सुविधाजनक हो जाता है।

सिफारिश की: