विषयसूची:

एक्सबॉक्स 360 कंट्रोलर एक्सेलेरोमीटर/जीरो स्टीयरिंग मॉड: 7 स्टेप
एक्सबॉक्स 360 कंट्रोलर एक्सेलेरोमीटर/जीरो स्टीयरिंग मॉड: 7 स्टेप

वीडियो: एक्सबॉक्स 360 कंट्रोलर एक्सेलेरोमीटर/जीरो स्टीयरिंग मॉड: 7 स्टेप

वीडियो: एक्सबॉक्स 360 कंट्रोलर एक्सेलेरोमीटर/जीरो स्टीयरिंग मॉड: 7 स्टेप
वीडियो: How to connect an Xbox 360 Wireless Controller to an Xbox 360 2024, नवंबर
Anonim
एक्सबॉक्स 360 कंट्रोलर एक्सेलेरोमीटर/जीरो स्टीयरिंग मोड
एक्सबॉक्स 360 कंट्रोलर एक्सेलेरोमीटर/जीरो स्टीयरिंग मोड

मैं अपने Xbox 360 कंट्रोलर के साथ Assetto Corsa खेल रहा हूं। दुर्भाग्य से, एनालॉग स्टिक के साथ स्टीयरिंग बहुत बोझिल है, और मेरे पास व्हील सेटअप के लिए जगह नहीं है। मैंने उन तरीकों के बारे में सोचने की कोशिश की जो मैं नियंत्रक में एक बेहतर स्टीयरिंग तंत्र को शूहॉर्न कर सकता था, जब मेरे साथ ऐसा हुआ कि मैं स्टीयरिंग व्हील के रूप में पूरे नियंत्रक का उपयोग कर सकता हूं।

एनालॉग स्टिक में दो पोटेंशियोमीटर होते हैं। एक ऊर्ध्वाधर गति को मापता है, और एक क्षैतिज गति को मापता है। यह प्रत्येक के माध्यम से 1.6V डालता है और वाइपर पर उत्पन्न वोल्टेज को यह निर्धारित करने के लिए मापता है कि छड़ी कितनी चली गई है। इसका मतलब है कि वाइपर पिन को एक विशेष वोल्टेज खिलाकर छड़ी की गति को नियंत्रित करना संभव है। (अधिक जानकारी यहां:

यह मॉड एक्सेलेरोमीटर रीडिंग से कोण की गणना करने के लिए एक Arduino का उपयोग करता है और इसे DAC के माध्यम से एनालॉग स्टिक मूवमेंट में परिवर्तित करता है। इसलिए, इसे किसी भी गेम के साथ काम करना चाहिए जो एनालॉग स्टिक को इनपुट के रूप में उपयोग करता है।

चरण 1: आपको आवश्यकता होगी:

उपकरण:

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

सामग्री:

  • Xbox 360 नियंत्रक (डुह!)
  • Arduino Pro Mini (या एक क्लोन) (अधिमानतः 3.3V। यदि आप 5V संस्करण का उपयोग करते हैं तो आपको संभवतः एक स्टेप अप वोल्टेज कनवर्टर की आवश्यकता होगी)
  • एक MPU-6050 जाइरोस्कोप / एक्सेलेरोमीटर
  • एक MCP4725 DAC (दो यदि आप दोनों अक्षों को नियंत्रित करना चाहते हैं)
  • कुछ पतले तार
  • एक ब्रेडबोर्ड ताकि आप मिलाप करने से पहले सब कुछ परीक्षण कर सकें (वैकल्पिक, लेकिन अनुशंसित)

चरण 2: नियंत्रक के अलावा ले लो

नियंत्रक के अलावा ले लो
नियंत्रक के अलावा ले लो
नियंत्रक के अलावा ले लो
नियंत्रक के अलावा ले लो
नियंत्रक के अलावा ले लो
नियंत्रक के अलावा ले लो

आपको हटाने के लिए सात पेंच हैं। उनमें से छह स्पष्ट हैं, लेकिन सातवां स्टिकर के पीछे है। मुझे लगता है कि इसे हटाने से आपकी वारंटी समाप्त हो जाती है, इसलिए अपने जोखिम पर आगे बढ़ें। बहुत सारे गाइड कहते हैं कि आपको Torx पेचकश की आवश्यकता है, लेकिन मेरा क्रॉसहेड है, इसलिए अपने नियंत्रक की जाँच करें।

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

अगली बात बाईं एनालॉग स्टिक को हटाना है ताकि यह हमारे इनपुट में हस्तक्षेप न करे, लेकिन लेफ्ट ट्रिगर मैकेनिज्म रास्ते में है। इसे हटाने के लिए, आपको बोर्ड के सामने से पोटेंशियोमीटर से तीन पिनों को हटाना होगा, फिर पीसीबी से तंत्र को खोलना होगा।

इसके बाद, बाएं एनालॉग स्टिक को पकड़े हुए 14 पिनों को हटा दें। फिर छड़ी को हटा दें।

चरण 3: घटकों को जगह पर चिपका दें

घटकों को जगह पर चिपकाएं
घटकों को जगह पर चिपकाएं
घटकों को जगह पर चिपकाएं
घटकों को जगह पर चिपकाएं

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

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

मैंने इसे इंसुलेट करने के लिए प्रत्येक पीसीबी के पीछे कार्ड के एक पतले टुकड़े को चिपका दिया, फिर उसे कंट्रोलर के पीसीबी से चिपका दिया। मैं गोंद का उपयोग करने के लिए अनिच्छुक था, लेकिन इसे करने के बेहतर तरीके के बारे में नहीं सोच सकता था।

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

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

डीएसी निचले बाएं कोने में जाते हैं। यदि आप दोनों अक्षों को नियंत्रित करना चाहते हैं, तो दो डीएसी, एक के ऊपर एक, को ढेर करने के लिए यहां पर्याप्त निकासी है। आपको उन्हें नीचे चिपकाने की आवश्यकता नहीं है। वे वहीं रहेंगे जहां वे सिर्फ मिलाप वाले कनेक्शन के साथ हैं। यदि आप उनके बीच कार्ड चिपका रहे हैं, तो सुनिश्चित करें कि आपने कार्ड को काट दिया है ताकि SCL, SDA, VCC और GND को एक्सेस किया जा सके, क्योंकि आप उन्हें दोनों तरफ से एक्सेस कर रहे होंगे।

यदि आप दो डीएसी का उपयोग करते हैं, तो एड्रेस जम्पर को स्विच करना न भूलें और उनमें से एक पर पुल अप रेसिस्टर्स को अक्षम करें, जैसा कि यहां बताया गया है: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -कन्वर्टर-हुकअप-गाइड

चरण 4: तारों को मिलाएं

तारों को मिलाएं
तारों को मिलाएं
तारों को मिलाएं
तारों को मिलाएं
तारों को मिलाएं
तारों को मिलाएं

अब आपको सब कुछ जोड़ना होगा। सभी 2/3 उपकरणों से VCC, GND, SDA और SCL को क्रमशः Arduino पर VCC, GND, A4 और A5 से जोड़ा जाना चाहिए। DAC सबसे पेचीदा हिस्सा हैं। यदि आपके पास दो हैं, तो आपको उन्हें एक साथ जोड़ना होगा, कहीं बाहर निकलते समय आप पावर और लाइनों को एक्सेलेरोमीटर से जोड़ सकते हैं, जबकि OUT तारों को अलग रखते हुए।

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

मेरी मूल योजना RAW पिन से जुड़े USB केबल से 5V के साथ Arduino को पावर देने की थी, लेकिन जब मैंने कोशिश की, तो यह काम नहीं किया। Arduino कुछ भी नहीं चला, और Arduino और नियंत्रक दोनों कुछ सेकंड के बाद बंद हो गए। हालाँकि, मुझे पता चला कि ब्लैक पेरिफेरल सॉकेट के पास बोर्ड के सामने दो पिनों से एक स्थिर 3.3V आउटपुट है, संभवतः बाह्य उपकरणों को शक्ति देने के लिए। यह वीसीसी और रॉ दोनों के साथ काम करता है, लेकिन मैंने वीसीसी को चुना क्योंकि यह पहले से ही सही वोल्टेज है और क्योंकि यह मुझे इसे डीएसी पर वीसीसी तार में मिलाप करने की अनुमति देता है जो पहले से ही बोर्ड के निचले भाग के पास है और तारों पर बचत करता है।

इस बात से अवगत रहें कि उस केस से बहुत सारे प्लास्टिक के पुर्जे उभरे हुए हैं जिसके आसपास आपको काम करना है, लेकिन अगर आप तारों को जगह में चिपकाते हैं, तो आपको केवल एक बार उनके बारे में चिंता करने की ज़रूरत है।

यह सब शब्दों के साथ वर्णन करना कठिन है, इसलिए मैंने चित्र और एक अपरिष्कृत आरेख शामिल किया है।

चरण 5: Arduino को प्रोग्राम करें

अब आपको Arduino को प्रोग्राम करना है। इसके लिए USB केबल को कंट्रोलर पर ले जाने की आवश्यकता होती है ताकि आप Arduino पर सीरियल पिन तक पहुंच सकें। मैंने वह कोड शामिल किया है जिसका मैंने उपयोग किया था। इसके लिए एडफ्रूट एमसीपी४७२५ पुस्तकालय की आवश्यकता है, जो यहां पाया जा सकता है:

जैसा कि, कोड आपको एनालॉग स्टिक की गति की पूरी श्रृंखला के माध्यम से समान रूप से नियंत्रक को 90 डिग्री से बाईं ओर 90 डिग्री दाईं ओर ले जाने की अनुमति देता है, और इसे सपाट पकड़कर बीच में रखता है।

यह Z अक्ष g-बल द्वारा विभाजित X-अक्ष g-बल के प्रतिलोम स्पर्शरेखा की गणना करके नियंत्रक का कोण प्राप्त करता है। इसका मतलब है कि यह काम करता है अगर नियंत्रक लंबवत, सपाट, या बीच में कोई कोण है। (अधिक जानकारी यहां:

यह मेरे नियंत्रक पर काम करता है, लेकिन अन्य नियंत्रकों को अलग-अलग वोल्टेज की आवश्यकता हो सकती है, इसे संरेखण से बाहर कर सकते हैं। मुझे लगता है कि वोल्टेज रेंज खोजने का सबसे अच्छा तरीका परीक्षण और त्रुटि के साथ है। कई गेम आपको एनालॉग स्टिक मूवमेंट के लिए एक स्लाइडर दिखाएंगे, लेकिन सबसे सटीक तरीका जो मैंने आंदोलन को निर्धारित करने के लिए पाया है वह है लिनक्स पर jstest। (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) यह आपको ग्राफ़िक के बजाय -32, 767 और 32, 767 के बीच की एक संख्या देता है, इसलिए आपको ठीक-ठीक पता है कि स्टिक कहाँ है। सीरियल एडॉप्टर में कंट्रोलर और Arduino USB दोनों में प्लग इन करें, jstest लोड करें और जब तक आप रेंज के ऊपर और नीचे तक नहीं पहुंच जाते, तब तक अलग-अलग DAC मानों को आज़माएं, और प्रत्येक का एक नोट बनाएं। मेरे लिए यह 1, 593 - 382 था।

विशेष रुचि की पंक्ति ३६ है:

dacvalue = (कंट्रोलरएंगल + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5;

यह तुरंत स्पष्ट नहीं है कि यह क्या करता है। बस, यह नियंत्रक का कोण लेता है (रेडियन में मापा जाता है और ~ 1.57 और ~ -1.57 के बीच) और इसे डीएसी के लिए 1, 593 और 382 के बीच के मान में परिवर्तित करता है। यदि आपके पास एक अलग DAC रेंज है, तो आपको उस लाइन को बदलना होगा।

पंक्ति को इस प्रकार लिखा जा सकता है:

dacvalue = (नियंत्रक +) / + ०.५;

संख्याओं के साथ और होने के नाते आपको बदलने की जरूरत है। डीएसी मूल्यों की कुल सीमा से विभाजित नियंत्रक कोण (पीआई) की सीमा के बराबर है। (सीमा का शीर्ष घटा सीमा के नीचे) यह आपको वोल्टेज बदलने तक ले जाता है, हालांकि परिणाम उस सीमा से बाहर होंगे जो आप चाहते हैं। इसलिए आपको चाहिए। सीमा के नीचे से गुणा के बराबर है और नियंत्रक की गति की आधी सीमा है। (pi / 2) गति की आधी सीमा जोड़ने से यह सुनिश्चित हो जाता है कि यह एक ऋणात्मक संख्या नहीं है, और श्रेणी के निचले भाग से गुणा करने पर यह सुनिश्चित हो जाता है कि यह उस श्रेणी के साथ सिंक्रनाइज़ है जिसे आप चाहते हैं।

दशमलव को पूर्णांक में परिवर्तित करते समय, C++ गोल नहीं होता है। इसके बजाय यह दशमलव को काट देता है, इसलिए 9.9 9 हो जाता है। 0.5 को अंत में जोड़ने से यह सुनिश्चित हो जाता है कि आधे से ऊपर की कोई भी चीज़ अगले पूर्णांक पर जाती है, इसलिए यह गोल हो जाती है।

अपना प्रोग्राम अपलोड करने के बाद, सुनिश्चित करें कि यह jstest के साथ काम करता है।

चरण 6: नियंत्रक को फिर से इकट्ठा करें

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

चरण 7: संभावित सुधार

कुछ सुधार हैं जिन्हें किया जा सकता है। इसमे शामिल है:

  • कम बोझिल चुंबक तार का उपयोग करना
  • एक पीसीबी पर सब कुछ नक़्क़ाशी करना जिसे नियंत्रक मामले में फिट करने के लिए डिज़ाइन किया गया है
  • बाएं एनालॉग स्टिक को फिर से जोड़ना और पैरों को Arduino पर एनालॉग इनपुट से जोड़ना ताकि उनका उपयोग Arduino को समायोजित करने के लिए किया जा सके
  • वायरलेस कंट्रोलर के लिए बैक केस पीस प्राप्त करना और प्रोजेक्ट को बैटरी कम्पार्टमेंट में रखना (इसके लिए USB केबल के लिए एक छेद काटने की आवश्यकता होगी)

सिफारिश की: