विषयसूची:

प्लग एंड प्ले आर्केड बटन: 7 चरण (चित्रों के साथ)
प्लग एंड प्ले आर्केड बटन: 7 चरण (चित्रों के साथ)

वीडियो: प्लग एंड प्ले आर्केड बटन: 7 चरण (चित्रों के साथ)

वीडियो: प्लग एंड प्ले आर्केड बटन: 7 चरण (चित्रों के साथ)
वीडियो: Keep Your Finger Here, See What Happens to Stickman 2024, जुलाई
Anonim
प्लग एंड प्ले आर्केड बटन
प्लग एंड प्ले आर्केड बटन

मैंने हाल ही में अपनी परियोजनाओं को बनाने के लिए Arduino का उपयोग करना शुरू किया। एक डिजाइनर के रूप में मुझे अपने गेम/इंटरैक्टिव प्रोजेक्ट्स के लिए कस्टम इंटरफेस बनाना पसंद है।

एक समस्या जो मेरे सामने आई वह यह थी कि धारावाहिक संचार का उपयोग करना काफी जटिल है और समस्याओं और बगों से ग्रस्त है और मैं अपने खेल को नियंत्रित करने के लिए बाहरी बटनों का उपयोग करने की अनुमति देने के लिए एक त्वरित और आसान समाधान चाहता था।

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

नोट: यदि आप फर्मवेयर को अपडेट करते हैं, जैसा कि यहां दिखाया गया है, तो आप एक यूनो का भी उपयोग कर सकते हैं।

चरण 1: सामग्री

इस परियोजना के लिए आपको आवश्यकता होगी:

1x HID सक्षम माइक्रोकंट्रोलर (Arduino micro, Due & leonardo जैसे कुछ हैं, मैं Arduino लियोनार्डो का उपयोग करूंगा)

1x USB से arduino केबल (लियोनार्डो के लिए यह USB माइक्रो है)

3x आर्केड बटन (मैंने इन्हें खरीदा)

1x सोल्डरलेस ब्रेडबोर्ड

3x 10k ओम प्रतिरोधक

3x 220 ओम प्रतिरोधक

जम्पर तार

चीजों को और अधिक स्थायी बनाने के लिए आप निश्चित रूप से अधिक बटन जोड़ सकते हैं, या ब्रेडबोर्ड में सब कुछ मिला सकते हैं।

चरण 2: प्रोटोटाइप

प्रोटोटाइप
प्रोटोटाइप
प्रोटोटाइप
प्रोटोटाइप
प्रोटोटाइप
प्रोटोटाइप

इसलिए, इससे पहले कि मैं आर्केड बटन खरीदता जिसका मैं उपयोग करना चाहता था, मैंने मानक पुश बटन के साथ इसका परीक्षण किया। मानक तरीके से बटन को तार दें, मेरा मानना है कि मैंने 10K ओम प्रतिरोधों का उपयोग किया है।

लियोनार्डो के लिए धन्यवाद, प्रोग्रामिंग बहुत सरल है। आपको कीबोर्ड लाइब्रेरी को शामिल करना होगा। मैंने अपने कोड के आधार के रूप में Arduino मानक उदाहरण "कीबोर्ड संदेश" का उपयोग किया।

अब सवाल यह है कि आप अपने बटन कैसे काम करना चाहते हैं। आपके पास मूल रूप से दो विकल्प हैं, सिंगल बटन प्रेस और पुश किए जाने पर अक्षरों की एक सतत धारा। यह वास्तव में आपकी परियोजना पर निर्भर करता है कि आप क्या चाहते हैं।

यदि आप चाहते हैं कि किसी कुंजी को दबाने पर कुछ घटित हो, जैसे कूदना या चालू/बंद स्विच तो आप एकल पुश विधि का चयन करेंगे। इस विधि से आप बटन की स्थिति को देखते हैं, यह ऊपर है या नीचे? फिर आप इसकी तुलना पिछली स्थिति से करते हैं, क्या यह पहले से ही ऊपर या नीचे थी? यदि पिछला बटन स्थिति वर्तमान बटन स्थिति के समान है तो कुछ भी नहीं होता है। लेकिन अगर बटन की स्थिति बदल जाती है, जैसा कि आप बटन दबाते या छोड़ते हैं तो कुछ होता है। मेरे कोड में यह केवल एक अक्षर टाइप करता है जब बटन दबाया जाता है, जारी होने पर नहीं, लेकिन आप इसे बदल सकते हैं।

#शामिल "कीबोर्ड.एच"

कॉन्स्ट इंट बटन लेफ्ट = ए0; // पुशबटन के लिए इनपुट पिन

कॉन्स्ट इंट बटन राइट = ए 1; कॉन्स्ट इंट बटनअप = ए 2;

इंट पिछलाबटनस्टेट लेफ्ट = हाई; // पुशबटन की स्थिति की जाँच करने के लिए

इंट पिछलाबटनस्टेटराइट = हाई; इंट पिछलाबटनस्टेटअप = हाई;

व्यर्थ व्यवस्था() {

// पुशबटन को एक इनपुट पिन करें: पिनमोड (बटन लेफ्ट, इनपुट); पिनमोड (बटन राइट, इनपुट); पिनमोड (बटनअप, इनपुट); // कीबोर्ड पर नियंत्रण आरंभ करें: Keyboard.begin (); }

शून्य लूप () {

// पुशबटन पढ़ें: int buttonStateLeft = digitalRead (buttonLeft); // अगर बटन की स्थिति बदल गई है, अगर ((बटनस्टेट लेफ्ट! = पिछलाबटनस्टेट लेफ्ट) // और यह वर्तमान में दबाया गया है: && (बटनस्टेट लेफ्ट == हाई)) {// एक संदेश टाइप करें कीबोर्ड.प्रिंट ("ए"); } // अगली बार तुलना के लिए वर्तमान बटन स्थिति को सहेजें: पिछलाबटनस्टेट लेफ्ट = बटनस्टेट लेफ्ट;

// पुशबटन पढ़ें:

इंट बटनस्टेटराइट = डिजिटल रीड (बटन राइट); // अगर बटन की स्थिति बदल गई है, अगर ((बटनस्टेट राइट! = पिछलाबटनस्टेट राइट) // और यह वर्तमान में दबाया गया है: && (बटनस्टेट राइट == हाई)) {// एक संदेश टाइप करें कीबोर्ड।प्रिंट ("डब्ल्यू"); } // अगली बार तुलना के लिए वर्तमान बटन स्थिति को सहेजें: पिछलाबटनस्टेटराइट = बटनस्टेटराइट;

// पुशबटन पढ़ें:

इंट बटनस्टेटअप = डिजिटल रीड (बटनअप); // अगर बटन की स्थिति बदल गई है, अगर ((बटनस्टेटअप! = पिछलाबटनस्टेटअप) // और यह वर्तमान में दबाया गया है: && (बटनस्टेटअप == हाई)) {// एक संदेश टाइप करें कीबोर्ड.प्रिंट ("डी"); } // अगली बार तुलना के लिए वर्तमान बटन स्थिति को सहेजें: पिछलाबटनस्टेटअप = बटनस्टेटअप; }

यदि आप चाहते हैं कि जब तक बटन को धक्का दिया जाता है, तब तक लगातार कुछ होता रहे, जैसा कि आप बाएं या दाएं आंदोलन के लिए चाहते हैं, बस इसे पिछले बटन की स्थिति की जांच किए बिना एक पत्र लिखने दें। इसे पागल होने से रोकने के लिए और आपके बटनों में किसी भी उछाल का मुकाबला करने के लिए एक छोटी सी देरी जोड़ना याद रखें। इस समस्या को हल करने के और भी शानदार तरीके हैं, लेकिन यह आसान और तेज़ है।

#शामिल "कीबोर्ड.एच"

कॉन्स्ट इंट बटन लेफ्ट = ए0; // पुशबटन के लिए इनपुट पिन

कॉन्स्ट इंट बटन राइट = ए 1; कॉन्स्ट इंट बटनअप = A2;

व्यर्थ व्यवस्था() {

// पुशबटन पिन को एक इनपुट बनाएं: पिनमोड (बटन लेफ्ट, इनपुट); पिनमोड (बटन राइट, इनपुट); पिनमोड (बटनअप, इनपुट); // कीबोर्ड पर नियंत्रण आरंभ करें: Keyboard.begin (); }

शून्य लूप () {

// पुशबटन पढ़ें: int buttonStateLeft = digitalRead (buttonLeft); अगर (बटनस्टेट लेफ्ट == हाई) // अगर बटन दबाया जाता है {// एक संदेश टाइप करें कीबोर्ड.प्रिंट ("ए"); देरी (50); // उछाल के लिए देरी और आपको कंप्यूटर को पकड़ने देने के लिए}

// पुशबटन पढ़ें:

इंट बटनस्टेटराइट = डिजिटल रीड (बटन राइट); if (buttonStateRight == High) // यदि बटन दबाया जाता है {// एक संदेश टाइप करें Keyboard.print("w"); देरी (50); // उछाल के लिए देरी और आपको कंप्यूटर को पकड़ने देने के लिए}

// पुशबटन पढ़ें:

इंट बटनस्टेटअप = डिजिटल रीड (बटनअप); अगर (बटनस्टेटअप == हाई) // अगर बटन दबाया जाता है {// एक संदेश टाइप करें कीबोर्ड.प्रिंट ("डी"); देरी (50); // उछाल के लिए देरी और आपको कंप्यूटर को पकड़ने देने के लिए}}

आप हमेशा दोनों विधियों के मिश्रण का उपयोग कर सकते हैं, जो इस बात पर निर्भर करता है कि आपकी आवश्यकताओं के लिए सबसे अच्छा क्या है।

चरण 3: लेजर केस काटना

लेजर केस काटना
लेजर केस काटना

मामले के लिए मैंने 2 मिमी Plexiglas डालने के साथ 3 मिमी mdf का उपयोग किया। मैंने इंसर्ट जोड़ा क्योंकि मैं बाद के चरण में इसे अच्छा और चमकदार बनाने के लिए केस के अंदर कुछ एल ई डी जोड़ना चाहता हूं।

मैंने अपने आयामों को मेकरकेस में इनपुट किया और svg फ़ाइल डाउनलोड की। मैंने इसे इलस्ट्रेटर में खोला और उन छेदों को जोड़ा जहाँ मैं उन्हें चाहता था। यदि आपके पास इलस्ट्रेटर नहीं है तो आप इस चरण के लिए इंकस्केप का उपयोग कर सकते हैं।

आपको लेजर कटर का उपयोग करने की आवश्यकता नहीं है, क्योंकि यह एक साधारण बॉक्स है जिसमें कुछ छेद हैं। अधिक पारंपरिक बिजली उपकरण (या यहां तक कि हाथ उपकरण!) का उपयोग करके इसे बनाना काफी आसान होना चाहिए। मैं बहुत आलसी हूं और लेजर कटर तक पहुंच रखता हूं।

चरण 4: सोल्डरिंग आर्केड बटन

सोल्डरिंग आर्केड बटन
सोल्डरिंग आर्केड बटन
सोल्डरिंग आर्केड बटन
सोल्डरिंग आर्केड बटन
सोल्डरिंग आर्केड बटन
सोल्डरिंग आर्केड बटन

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

मेरे बटन रोशन हैं इसलिए मैंने एलईडी धारक को तारों को मिलाया। अपने तारों को रंग कोड करना सुनिश्चित करें ताकि आप जान सकें कि कौन सा पक्ष एनोड है और कौन सा कैथोड (एलईडी के सकारात्मक और नकारात्मक पक्ष)।

मैंने अपने तारों पर हेडर पिन को मिलाया, ताकि उन्हें सोल्डरलेस ब्रेडबोर्ड के साथ उपयोग करना आसान हो सके। मैंने बस तार को एक हेडर पिन में मिलाया और उन्हें और अधिक लचीला बनाने के लिए टयूबिंग को थोड़ा सा हीट सिकोड़ दिया।

चरण 5: बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें

बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें
बटनों को ढेर करें और उन्हें अपने बोर्ड से कनेक्ट करें

अब आपके मामले में अपने आर्केड बटनों को ढेर करने का समय आ गया है। प्लास्टिक के आवरण से लॉकिंग रिंग निकालें और इसे केस में छेद के माध्यम से चिपका दें। बटन को सुरक्षित करने के लिए लॉकिंग रिंग को दूसरी तरफ थ्रेड करें। एलईडी होल्डर में चिपका दें और इसे जगह पर लॉक करने के लिए मोड़ दें। माइक्रो स्विच में विगल करें (इसमें छोटे-छोटे नॉब्स और होल होते हैं जो एक दूसरे के साथ संरेखित होते हैं ताकि इसे जगह पर रखा जा सके)।

स्विच को बोर्ड से जोड़ने के लिए उन पुश बटनों को हटा दें जिन्हें आपने जोड़ा हो या नहीं। माइक्रो स्विच के ग्राउंड से अरुडिनो और रेसिस्टर (जहां पुश बटन का लेग था) की जमीन से जाने वाले तार को कनेक्ट करें। माइक्रो स्विच के NO से जाने वाले तार को Arduino के 5v से कनेक्ट करें।

एलईडी तारों के लिए नकारात्मक तार को जमीन से और सकारात्मक को 220OHM रोकनेवाला के माध्यम से 5v से कनेक्ट करें। यदि आप उन्हें इस तरह तार देते हैं तो वे हमेशा चालू रहेंगे। आप उन्हें कोड में जोड़ सकते हैं और यदि आप चाहें तो उन्हें बटन के साथ सिंक में चालू और बंद करने के लिए प्राप्त कर सकते हैं।

चरण 6: कोडिंग नर्क

तो, अब आपने अपने पुराने कोड के साथ अपने फैंसी नए बटन संलग्न कर दिए हैं और अचानक यह काम नहीं करता है जैसा कि अब होना चाहिए। अक्षर एक बार में दो या तीन दिखाई देते हैं और यह साधारण HTML5 गेम के साथ काम नहीं करता है। बहस नरक में आपका स्वागत है।

पहली चीजें पहले। प्रोटोटाइप के दौरान हमने जो कोड लिखा था? यह ठीक काम करता है और सरल है, लेकिन यह सुरुचिपूर्ण नहीं है। यदि आप और बटन जोड़ना चाहते हैं तो आपको कोड के स्निपेट को कॉपी और पेस्ट करना होगा और उनके अंदर के सभी मानों को बदलना होगा। यदि आप उनमें से एक को भूल जाते हैं तो आप बगफिक्सिंग नरक में प्रवेश करते हैं। यहाँ एक विषय का पता लगाएं? कोडिंग नरक है, लेकिन एक बहुत ही मजेदार, समस्या को हल करने वाला नरक है।

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

अब यदि आप मेरे जैसे हैं तो आप बटनों का उपयोग करने का एक सरल और आसान तरीका लिखेंगे और यह उस तरह से काम नहीं करेगा जैसा आप चाहते हैं। तो आप नए संस्करण बनाते हैं (बच्चों को याद रखें, वृद्धिशील बैक-अप!), अलग-अलग चीजों को आजमाएं, लगातार अधिक जटिल कोड लिखें जो अभी भी अच्छी तरह से काम नहीं करता है और अंततः आपके द्वारा घंटों पहले लिखे गए सरल कोड पर वापस जाएं और एक छोटी सी त्रुटि देखें जो तुरंत सब कुछ ठीक कर देता है।

मैं आपको उस यात्रा को छोड़ दूं, यहां कार्य कोड है:

अस्वीकरण: यह पाठ एक बहुत ही सरल कोड कोडिंग और बग फिक्सिंग के घंटों के बाद लिखा गया था। कृपया निराशा के किसी भी संकेत पर ध्यान न दें और नीचे पोस्ट किए गए कार्य कोड पर ध्यान दें;)

#शामिल "कीबोर्ड.एच"#बटन परिभाषित करेंराशि 3

इंट बटनपिन = {

ए0, ए1, ए2}; // बटन कहाँ हैं? int asciiLetter = { ९७, १००, ११९}; // ASCII में पत्र, यहाँ: a, d, w int buttonState[buttonAmount]; // बटन दबाया गया है या नहीं?

व्यर्थ व्यवस्था() {

के लिए (int i = 0; i <buttonAmount; i++) {// सरणी पिनमोड के माध्यम से चक्र (बटनपिन , INPUT); // सभी पिनों को इनपुट पर सेट करें } }

शून्य लूप () {

के लिए (int i = 0; i <buttonAmount; i++) // सरणी के माध्यम से चक्र {buttonState = digitalRead(buttonPin); // बटन क्या कर रहे हैं? अगर (बटनस्टेट == हाई) {// यदि बटन दबाया जाता है तो कीबोर्ड। प्रेस (asciiLetter ); // संबंधित पत्र भेजें} और // यदि बटन दबाया नहीं गया है {कीबोर्ड.रिलीज (asciiLetter); // पत्र जारी करें } }

}

चरण 7: सब कुछ काम करता है

अपने प्लग एंड प्ले कस्टम कंट्रोलर का आनंद लें!

अगर आपको यह निर्देश पसंद आया हो, तो कृपया मुझे प्रतियोगिता में वोट करने पर विचार करें!

सिफारिश की: