विषयसूची:

लैपकेड आर्केड कंट्रोलर: 6 चरण (चित्रों के साथ)
लैपकेड आर्केड कंट्रोलर: 6 चरण (चित्रों के साथ)

वीडियो: लैपकेड आर्केड कंट्रोलर: 6 चरण (चित्रों के साथ)

वीडियो: लैपकेड आर्केड कंट्रोलर: 6 चरण (चित्रों के साथ)
वीडियो: Baat Pate Ki : विवेक अग्निहोत्री ने लैपिड को दिया चैलेंज| Vivek Agnihotri | The Kashmir Files 2024, सितंबर
Anonim
लैपकेड आर्केड कंट्रोलर
लैपकेड आर्केड कंट्रोलर

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

आर्केड के दिन गए लेकिन आप अभी भी अपने रहने वाले कमरे में क्लासिक आर्केड गेम का अनुभव कर सकते हैं। तो, यहाँ मैं आपके लिए लैपकेड प्रस्तुत करता हूँ। यदि आप मेरे जैसे हैं और खेलने से ज्यादा निर्माण सामग्री का आनंद लेते हैं, तो आप इस निर्माण का आनंद ले सकते हैं। यदि आपके कोई प्रश्न या सुझाव हैं जो नीचे "संस्करण 2 के लिए विचार" खंड में शामिल नहीं हैं, तो कृपया एक टिप्पणी छोड़ दें।

चरण 1: अवलोकन

अवलोकन
अवलोकन
अवलोकन
अवलोकन

यह क्या चीज़ है?

सबसे पहले, कृपया ध्यान दें कि लैपकेड क्या नहीं है:

  • यह गेमिंग कंसोल नहीं है।
  • इसमें कोई गेम नहीं है और न ही इसमें गेम लोड करने और खेलने की क्षमता है।
  • यह किसी टीवी या मॉनिटर से कनेक्ट नहीं होता है।

लैपकेड एक ब्लूटूथ कीबोर्ड है। न कुछ ज्यादा, न कुछ कम।

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

पूर्व संस्करण 1

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

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

मैं डिवाइस को पावर देने के लिए 4 एए बैटरी का भी उपयोग कर रहा था और बॉक्स के बाहर यह कम पावर मोड नहीं लग रहा था। बैटरी एक या दो दिन में सूख जाती हैं, भले ही इसका उपयोग नहीं किया जा रहा हो।

इसलिए, मेरे एक मित्र के आग्रह पर, मैंने उसी नियंत्रक का प्रोग्राम योग्य संस्करण बनाने का निर्णय लिया जिसमें त्वरित मोड परिवर्तन थे, जो मुझे एक ही उपकरण का उपयोग करने के लिए कई अनुप्रयोगों को नियंत्रित करने की अनुमति देगा, बाएं हाथ के लिए "फ़्लिप" भी हो सकता है उपयोग और एक लैपटॉप मामले में था जो मेरे वर्तमान 10 एलबी समाधान से बहुत कम था।

यह अपग्रेड का समय था।

संस्करण 1 डिजाइनपरियोजना लक्ष्य:

  • लचीला
  • रिचार्जेबल
  • वामपंथियों और दक्षिणपंथियों के लिए
  • कोई तार नहीं
  • लाइटवेट

मैं चाहता था कि यह नया डिज़ाइन लचीला हो। हर बार परीक्षण या परिवर्तन करने के लिए आवश्यक घटकों को पुन: प्रोग्राम किए बिना नियंत्रणों को फ्लाई पर बदलने योग्य होना चाहिए। इसका मतलब था कि संचालन के "मोड" चुनने के लिए नियंत्रक पर एक इंटरफ़ेस होना आवश्यक था। प्रत्येक बटन और जॉयस्टिक स्थिति के साथ अलग-अलग कुंजी-कोड होने चाहिए। उन समान नियंत्रणों को भी विभिन्न मोड का चयन करने के लिए उपयोग करने की आवश्यकता होगी।

ईज़ी-की वास्तविक समय में सीधे प्रोग्राम करने योग्य नहीं थी, इसलिए अगला समाधान कार्यक्षमता को प्रबंधित करने के लिए एक Arduino जैसे नियंत्रक का उपयोग करना होगा। EZ-कुंजी का उपयोग केवल ब्लूटूथ के माध्यम से पीसी पर कीकोड को संचारित करने के लिए किया जाएगा। मैंने Arduino Pro Mini को UNO (जो मुझे पहले से ही अनुभव था) के साथ सीधी संगतता के कारण चुना और इसके कॉम्पैक्ट आकार के कारण।

मैं इस नए बॉक्स के साथ बैटरी से निपटना नहीं चाहता था जैसे मैंने लैपकेड के पूर्ववर्ती के साथ किया था, इसलिए मैंने लिथियम पॉलिमर रिचार्जेबल बैटरी और चार्जर/आपूर्ति बोर्ड का उपयोग करना चुना। इसका मतलब था कि मैं सिर्फ एक मानक यूएसबी चार्जर का उपयोग कर सकता था। इसका मतलब यह भी था कि हर बार बैटरी खत्म होने पर मुझे केस नहीं खोलना पड़ेगा। EZ-Key और PowerBoost 500C दोनों में संकेतक हैं जिन्हें युग्मन स्थिति और कम बैटरी संकेत के लिए नियंत्रक के शीर्ष पर स्थानांतरित करने की आवश्यकता है। मैंने डिज़ाइन में कुछ एल ई डी जोड़े ताकि मैं ऑपरेशन के दौरान उपयोगकर्ता को इन आसान स्थिति संकेतकों को प्रतिबिंबित कर सकूं।

जैसे-जैसे मेरे डिजाइन का परीक्षण परिपक्व हुआ, मैंने पाया कि मेरे कई मूल विचार मेरी अपेक्षा के अनुरूप नहीं थे। उदाहरण के लिए, PowerBoost पर LBO संकेतक माइक्रोकंट्रोलर से बंधे होने पर अपेक्षा के अनुरूप काम नहीं करता है। यह डिवाइस के "बंद" या अक्षम होने पर बैटरी से आम जमीन से करंट को गुजरने देगा, एलबीओ लाइट जलेगी और जलती रहेगी। एडफ्रूट फोरम के अन्य लोगों ने भी इस मुद्दे का सामना किया था और बैटरी वोल्टेज को सीधे एनालॉग इनपुट पर नमूना करने में बेहतर समाधान की पेशकश की थी। एक बार जब वोल्टेज एक निश्चित स्तर तक गिर जाता है, तो उपयोगकर्ता को यह बताने का समय आ जाता है कि बैटरी बंद होने वाली है।

चरण 2: आपको क्या चाहिए

इलेक्ट्रॉनिक भागों की सूची

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

1 Arduino Pro Mini 5V - मुझे प्रो पसंद है क्योंकि यह कॉम्पैक्ट है। आप दिए गए कोड के साथ किसी भी Uno पिन/इंटरप्ट संगत बोर्ड का उपयोग कर सकते हैं

1 एडफ्रूट ब्लूफ्रूट ईज़ी-की ब्लूटूथ एचआईडी - जैसा कि ऊपर वर्णित है, यह ब्लूटूथ एचआईडी है जो कीकोड्स को होस्ट पीसी पर प्रसारित करने की अनुमति देता है।

1 MCP23017 - i2c 16 इनपुट/आउटपुट पोर्ट एक्सपैंडर-इस चिप का उपयोग I2C संचार प्रोटोकॉल के माध्यम से Arduino में 16 और इनपुट जोड़ने के लिए किया जाता है

1 एडफ्रूट पॉवरबूस्ट 500+ चार्जर - यह लैपकेड को पावर देने और लीपो को चार्ज करने के लिए पावर कंट्रोल बोर्ड है।

1 लिटियम पॉलिमर बैटरी (मैंने 2500mAh का उपयोग किया, लेकिन आप उच्च / निम्न क्षमता का उपयोग कर सकते हैं)

1 8-वे आर्केड जॉयस्टिक - कृपया जॉयस्टिक से संबंधित "संस्करण 2 के लिए विचार" अनुभाग देखें

9 आर्केड पुश बटन - मिश्रित रंग और स्क्रीनप्रिंट

2 प्रबुद्ध क्षणिक पुशबटन - मैंने इन 2 बटनों का उपयोग केंद्र 4 और 5 बटनों के लिए किया है और ये एडफ्रूट से हैं: लाल (केंद्र 4), नीला (केंद्र 5)

1 प्रबुद्ध लैचिंग पुशबटन मैंने इसे Adafruit के पावर बटन के लिए उपयोग किया: हरा

2 एल ई डी पेयरिंग सिग्नल और बैटरी कम को संदर्भित करने के लिए उपयोग किया जाता है। मैंने दो रेडियोशैक भागों का उपयोग किया 2760270 और 2760271

1 16 x 2 एलसीडी स्क्रीन

1 I2C/SPI LCD बैकपैक - 16x2 डिस्प्ले पर I2C संचार के लिए उपयोग किया जाता है।

1 पैनल माउंट यूएसबी एक्सटेंशन केबल - पावरबूस्ट के माइक्रो-बी यूएसबी कनेक्टर को कैबिनेट की दीवार तक बढ़ाने के लिए उपयोग किया जाता है।

1 एडफ्रूट पर्मा-प्रोटो फुल-साइज़ ब्रेडबोर्ड पीसीबी - आवश्यक नहीं है लेकिन स्थायी माउंटिंग को इतना आसान बनाता है।

5 220 ओम प्रतिरोधी

7 1K ओम रेसिस्टर्स

2 2.2K ओम रेसिस्टर्स

1 4.7K ओम रेसिस्टर

18 #10 महिला कुदाल कनेक्टर्स - आर्केड बटन संपर्कों से कनेक्ट करने के लिए। सोल्डरिंग पर अनुशंसित क्योंकि बटन अंततः खराब हो जाएंगे।

22 गेज हुकअप तार - मुक्त खड़े तार प्रबंधन करने के लिए मैंने फंसे होने के बजाय ठोस हुकअप तार का उपयोग किया। यह विशुद्ध रूप से प्रदर्शन उद्देश्यों के लिए था और इसकी अनुशंसा नहीं की जाती है क्योंकि ठोस तार भंगुर होते हैं और टूटने की संभावना होती है।

निम्नलिखित मदों की आवश्यकता नहीं है, लेकिन घास काटना आसान बना देगा और, यदि आप एक घटक को टोस्ट करते हैं, तो प्रतिस्थापन को आसान बनाते हैं:

  • आईसी सॉकेट - 28-पिन 0.3" चिप्स के लिए
  • आईसी सॉकेट - 28-पिन 0.6" चिप्स के लिए
  • 0.1" महिला हेडर (कम से कम 1 36 पिन हेडर)

कैबिनेट पार्ट्स:

  • 3 12 x 24 1/8 इंच सन्टी पैनल
  • 1 12 x 24 1/8 इंच स्पष्ट एक्रिलिक पैनल

फ़ाइलें:

  • लैपकेड V1.xlsx - नीचे उल्लिखित स्प्रेडशीट में सर्किट कनेक्शन हैं।
  • LapcadeV1-code.zip - इस परियोजना के लिए लिखे गए Arduino कोड वाली ज़िप फ़ाइल।
  • Lapcade_v1.zip - कैबिनेट के लिए svg चित्र वाली ज़िप फ़ाइल।
  • LapcadeV1-Circuit_Diagram_Large.zip - ज़िप फ़ाइल जिसमें नीचे दिखाए गए फ्रिटिंग सर्किट आरेख का एक उच्च रिज़ॉल्यूशन संस्करण है।

अधिक संसाधनों के लिए लिंक:

  • एडफ्रूट ब्लूफ्रूट ईज़ी-कुंजी दस्तावेज़ीकरण
  • एडफ्रूट पॉवरबूस्ट 500 + डॉक्यूमेंटेशन
  • I2C/SPI LCD बैकपैक दस्तावेज़ीकरण
  • MCP23017 I2C पोर्ट एक्सटेंडर दस्तावेज़ीकरण
  • एडफ्रूट एमसीपी२३०१७ अरुडिनो लाइब्रेरी

चरण 3: विधानसभा - मंत्रिमंडल

विधानसभा - कैबिनेट
विधानसभा - कैबिनेट
विधानसभा - कैबिनेट
विधानसभा - कैबिनेट
विधानसभा - कैबिनेट
विधानसभा - कैबिनेट
विधानसभा - कैबिनेट
विधानसभा - कैबिनेट

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

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

नीचे दी गई तस्वीरों में किताबों को सेट होने तक ताजा चिपके हुए टुकड़ों पर दबाव डालने के लिए रखा गया था। एक बार गोंद ठीक हो जाने के बाद, मैंने किनारों को चिकना कर दिया। मेरा डिज़ाइन जानबूझकर पैनलों को ऑफसेट करता है ताकि वे कोनों पर थोड़ा सा चिपके रहें। यह मुझे संयुक्त में बहुत अधिक प्राप्त किए बिना सैंडिंग के दौरान कोनों को गोल करने की अनुमति देगा।

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

कृपया ध्यान दें: यह एक बहु-परत आरेखण है और प्रत्येक परत सामग्री की एक शीट पर कटौती के एक सेट का प्रतिनिधित्व करती है। अपने कटर को प्रिंट भेजते समय, सुनिश्चित करें कि काटने से पहले अन्य सभी परतें छिपी हुई हैं।

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

एक तीसरा नोट: मैंने मूल ड्राइंग में यूएसबी चार्जिंग कॉर्ड के लिए एक कटआउट शामिल नहीं किया था क्योंकि मुझे यकीन नहीं था कि मैं इसे कहां रखना चाहता हूं ताकि यह उपयोग में हस्तक्षेप न करे। मैंने बाद में इसके लिए बाईं ओर के छेदों को बहुत पास से काट दिया, जहाँ आप नीचे की छवियों में "लैपकेड" शब्द देखते हैं। संस्करण 2 में चार्जिंग पोर्ट एक अलग स्थिति में होगा।:)

चरण 4: असेंबली - इलेक्ट्रॉनिक्स

विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स
विधानसभा - इलेक्ट्रॉनिक्स

सबसे पहले ऊपर दिखाए गए वायरिंग आरेख पर एक नज़र डालते हैं।

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

घटक कनेक्शन

यहां हर कनेक्शन को लंबे रूप में बताने की कोशिश करने के बजाय (Arduino एनालॉग पिन 0 पावरबॉस्ट बैट पिन के लिए 220 ओम रिसिस्टर के माध्यम से जाता है), मैंने एक स्प्रेडशीट बनाई जिसमें घटक के दृष्टिकोण से सभी कनेक्शन शामिल हैं। तो, स्प्रेडशीट के Arduino टैब पर, आप APM A0 -> 2.2K OHM -> PB Bat देखेंगे और PowerBoost टैब पर आप PB BAT -> 2.2K OHM -> APM A0 देखेंगे। कृपया इस परियोजना से जुड़ी सभी फाइलों के लिए नीचे संसाधन अनुभाग देखें।

स्प्रैडशीट के बारे में एक अन्य नोट यह है कि कुछ डिवाइस दो कनेक्शन कॉलम दिखाते हैं। यह एक पिन से एक से अधिक कनेक्शन दिखाने के लिए है। उदाहरण के लिए, सामान्य तार को छोड़कर प्रत्येक जॉयस्टिक कनेक्शन पुल-डाउन रोकनेवाला का उपयोग करता है ताकि यह सुनिश्चित हो सके कि पोर्ट एक्सटेंडर एक ठोस उच्च या निम्न संकेत प्राप्त करता है। जॉयस्टिक 2 के लिए इसे दिखाने के लिए, आपको कनेक्शन के लिए दो कॉलम दिखाई देंगे, एक जॉयस्टिक वायर के लिए एमसीपी 21 पिन के लिए और दूसरा पिन 21 से एक रेसिस्टर से ग्राउंड तक कनेक्शन के लिए। मुझे यकीन है कि इसे दस्तावेज करने के बेहतर तरीके हैं लेकिन मुझे डर है कि आप इस पर काम करने के मेरे तरीकों से फंस गए हैं।:)

प्रत्येक आर्केड बटन में एक सामान्य (कॉम), सामान्य रूप से खुला (नहीं) और सामान्य रूप से बंद (एनसी) संपर्क होता है। इनमें से प्रत्येक बटन के लिए, मैं कॉम और एनसी कनेक्शन का उपयोग कर रहा हूं।

चरण 5: कोड

कोड
कोड

सबसे पहले और सबसे महत्वपूर्ण, मुझे क्रेडिट देना होगा जहां यह देय है। लैपकेड को कोड करने के लिए मैंने निम्नलिखित लेख पर बहुत अधिक भरोसा किया:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid बेंजामिन गोल्ड को एक अच्छी तरह से लिखित और प्रलेखित परियोजना के लिए विशेष धन्यवाद!

तो, इस परियोजना के केंद्र में एक कीबोर्ड है। पीसी के दृष्टिकोण से, लैपकेड ब्लूटूथ के माध्यम से जुड़ा एक कीबोर्ड है, जो कि ईज़ी-की इतना अच्छा है। यह जटिल ब्लूटूथ प्रोटोकॉल, समय और कोड लेता है और उन्हें इनकैप्सुलेट करता है ताकि मुझे arduino के साथ बस इतना करना है कि इसे कीकोड भेजें। ऐसा करने के लिए, मैंने उपरोक्त प्रोजेक्ट में कोड मैप्स और परिचालन मोड बनाने के लिए अपने स्वयं के सरणी का उपयोग किया। प्रत्येक मोड बदल देता है जो वही बटन दबाता है जो लैपकेड पर करता है और जो पीसी को भेजा जाता है। तीन "बिल्ट-इन" ऑपरेशनल मोड हैं और उनके बाद के सभी मोड एप्लिकेशन मोड हैं।

परिचालन मोड

निम्नलिखित लैपकेड के परिचालन मोड को सारांशित करता है:

  1. स्टार्टअप - यह मोड पीसी के साथ कनेक्टिविटी की जांच करता है और स्टार्टअप वैरिएबल सेट करता है। यदि ईज़ी-की को पीसी के साथ नहीं जोड़ा जाता है तो यह पेयरिंग मोड में बदल जाता है
  2. पेयरिंग - इस मोड में EZ-Key को PC से पेयर किए जाने की प्रतीक्षा की जा रही है।
  3. मोड सेलेक्ट - यह मोड उपयोगकर्ता को यह चुनने की अनुमति देता है कि किस एप्लिकेशन मोड का उपयोग करना है। इस मोड में पीसी को कोई कीकोड नहीं भेजा जाता है। पिछले एप्लिकेशन मोड के आधार पर त्वरित मोड चयन भी हैं। उदाहरण के लिए प्रेसिंग मोड और फिर प्लेयर टू बटन जब मैम प्लेयर 1 मोड में बिना सर्च किए मोड को स्विच कर देता है और डिस्प्ले पर मैम प्लेयर 2 का चयन करता है।

आवेदन मोड

एप्लिकेशन मोड का उपयोग पीसी पर उपयुक्त कीकोड भेजने के लिए किया जाता है, जिसके आधार पर उपयोगकर्ता किस एप्लिकेशन में है। उदाहरण के लिए कोडी मोड में एक्शन 2 कुंजी "P" भेजती है जो कि पॉज़ है। मैम में वही बटन लेफ्ट ऑल्ट की भेजता है। यदि कोई पीसी के लिए माइनक्राफ्ट चलाने के लिए नियंत्रक का उपयोग करना चाहता है, तो उसे केवल उचित सरणी मानचित्र जोड़ने की आवश्यकता होगी।

प्रत्येक एप्लिकेशन को डेटा के 4 सरणियों में परिभाषित करने की आवश्यकता होती है।

  • मोड - इस सरणी में वह पाठ है जो प्रत्येक मोड के लिए स्क्रीन पर प्रस्तुत किया जाएगा। प्रदर्शन की दूसरी पंक्ति का उपयोग करने के लिए, बस एक पंक्ति विराम के रूप में सरणी में ~ रखें।
  • keyModes[14] - इस मैट्रिक्स सरणी में पीसी को भेजे गए कीकोड होते हैं। 14 तत्वों की प्रत्येक पंक्ति कीकोड मैपिंग के लिए अलग-अलग बटन का प्रतिनिधित्व करती है।
  • keyModifiers[14] - इस मैट्रिक्स ऐरे में प्रत्येक कीस्ट्रोक के लिए कीकोड संशोधक होते हैं जैसे कि शिफ्ट की को दबाए रखना।
  • QuickMode[3] - इस मैट्रिक्स सरणी में वर्तमान मोड के लिए त्वरित मोड चयन पैटर्न शामिल है।

मूल परिचालन

जब सिस्टम चालू होता है तो यह स्टार्टअप मोड में चला जाता है जहां ब्लूटूथ कनेक्शन की स्थिति की जांच की जाती है और उपयोगकर्ता को प्रदर्शित किया जाता है। Arduino को EZ-Key के L1 पिन से दालों की गिनती और समय से EZ-Key का दर्जा प्राप्त होता है। स्टार्टअप मोड के लिए चार उप-स्थितियां हैं:

  • पेयरिंग - EZ-Key सक्रिय पेयरिंग मोड में है और डिवाइस से अटैच होने की प्रतीक्षा कर रहा है।
  • जोड़ा गया लेकिन जुड़ा नहीं - ईज़ी-की को पहले जोड़ा गया है लेकिन वर्तमान में होस्ट डिवाइस से कनेक्ट नहीं है।
  • युग्मित और कनेक्टेड - EZ-कुंजी युग्मित है और होस्ट के साथ कनेक्शन स्थापित किया गया है। इस बिंदु पर, सिस्टम मोड सेलेक्ट पर आगे बढ़ेगा।
  • अज्ञात स्थिति - EZ-कुंजी एक अज्ञात कोड लौटा रही है या कोई संकेत व्यवधान है जो एक अज्ञात संकेत पैटर्न उत्पन्न कर रहा है। सिस्टम उपयोगकर्ता को होल्ड करेगा और सूचित करेगा। ऐसा होने पर पुनरारंभ करना होगा।

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

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

मोड चयन में, ऊपर और नीचे जॉयस्टिक क्रियाएं आपको एलसीडी डिस्प्ले पर उपलब्ध एप्लिकेशन मोड के माध्यम से ले जाएंगी। किसी एक मोड का चयन करने के लिए, एंटर बटन दबाएं (केंद्र 5)।

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

त्वरित मोड

एक बार एप्लिकेशन मोड का चयन कर लेने के बाद, इसकी त्वरित मोड परिभाषा सेट हो जाती है। सीधे शब्दों में कहें, क्विक मोड पहले तीन केंद्र बटन (केंद्र 1-3) द्वारा चयन योग्य एप्लिकेशन मोड हैं। ये तीन बटन मैट्रिक्स में सरणी तत्व के अनुरूप हैं।

उदाहरण के लिए, वर्तमान कॉन्फ़िगरेशन में, प्लेयर 1 मोड (मोड 4 या पांचवां मोड परिभाषित) में मैम का उपयोग करते समय, फिर मोड बटन दबाकर और फिर प्लेयर दो बटन क्विकमोड [4] [1] सरणी तत्व को लोड करता है (Arduino उपयोग करता है) 0 बेस एरे इंडेक्सिंग) जो 5 है। सिस्टम तब एप्लिकेशन मोड 5 पर स्विच हो जाता है जो मैम, प्लेयर 2 है।

चरण 6: संस्करण 2 के लिए विचार

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

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

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

राइट और लेफ्ट साइड "फ्लिपर" बटन - वर्जन 2 निश्चित रूप से कैबिनेट के बाईं और दाईं ओर एक-एक बटन जोड़ देगा। एक संभावित उपयोग पिनबॉल फ्लिपर्स के लिए होगा।

अन्य नियंत्रण - मैं अगले संस्करण में ट्रैकबॉल और/या स्पिनर जैसे अन्य सामान्य नियंत्रण जोड़ने की व्यवहार्यता देख रहा हूं। चूंकि EZ-Key माउस निर्देशांकों को संचारित करने में सक्षम है, इसलिए यह बहुत कठिन नहीं होना चाहिए।

ऑन-बोर्ड प्रोग्रामिंग - अगले संस्करण में केस को खोले बिना नए कॉन्फ़िगरेशन जोड़ने की क्षमता होनी चाहिए। मैं इसे संस्करण 1 में जोड़ना चाहता था लेकिन इसके लिए मेरे पास जितना समय और संसाधन था, उससे कहीं अधिक समय और संसाधनों की आवश्यकता थी।

वायरलेस प्रतियोगिता
वायरलेस प्रतियोगिता
वायरलेस प्रतियोगिता
वायरलेस प्रतियोगिता

वायरलेस प्रतियोगिता में द्वितीय पुरस्कार

सिफारिश की: