विषयसूची:

रिमोट यूएसबी गेमपैड के माध्यम से संचालित एक 4WD रोबोट: 6 कदम
रिमोट यूएसबी गेमपैड के माध्यम से संचालित एक 4WD रोबोट: 6 कदम

वीडियो: रिमोट यूएसबी गेमपैड के माध्यम से संचालित एक 4WD रोबोट: 6 कदम

वीडियो: रिमोट यूएसबी गेमपैड के माध्यम से संचालित एक 4WD रोबोट: 6 कदम
वीडियो: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, जून
Anonim
Image
Image

अपने अगले रोबोटिक्स प्रोजेक्ट के लिए, मुझे अप्रत्याशित परिस्थितियों के कारण अपने रोबोट प्लेटफॉर्म को आर्किटेक्ट/डिजाइन करने के लिए मजबूर होना पड़ा।

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

परिणाम मेरी अपेक्षा से लगभग अच्छे या बेहतर रहे हैं।

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

उदाहरण के लिए, मैंने कुछ मान्यता जोड़ी है कि रोबोट ने दीवार से टकराया है, बस सॉफ्टवेयर को उच्च धाराओं और कम एन्कोडर गति मानों का पता लगाने के द्वारा।

वैकल्पिक रूप से, कोई रोबोट में कुछ यूएसबी वेबकैम जोड़ सकता है, कितने और उनके प्लेसमेंट के आधार पर, कोई रोबोट को रहने वाले क्षेत्र के आसपास और दूसरे कमरे में चला सकता है, जबकि कंप्यूटर के सामने कहीं और बैठकर यूएसबी गेमपैड जुड़ा हुआ है यह।

यह निर्देश एक सच्चा, विस्तृत, सर्व-समावेशी, चरण-दर-चरण कैसे-कैसे होगा, लेकिन मैं जितना हो सके उतना विवरण देने की कोशिश करूंगा।

आपूर्ति

सुझाए गए हिस्से: इसमें से अधिकांश मैंने सर्वो सिटी (एक्टोबोटिक्स) से प्राप्त किया।

2 - 13.5 यू-चैनल, बेस फ्रेम के किनारों के लिए। इस पर मोटरें लगाई गई हैं। मैं कुछ छोटा गया और मेरी मोटरें बहुत कोनों पर लगी हुई हैं, और इससे उन्हें माउंट करना मुश्किल हो गया है।

2 - 12 बेस फ्रेम के आगे और पीछे के लिए यू-चैनल।

2 - 15 बंपर, आगे और पीछे के लिए यू-चैनल

2 - 7 (या यह 7.5 था?) सामने के स्तंभों के लिए यू-चैनल। यह बहुत महत्वपूर्ण नहीं है, लंबाई भिन्न हो सकती है। यह निर्भर करता है कि पीछे के स्तंभ कितने लंबे हैं, और आप किस ऊंचाई पर कोण लगाने के लिए चुनते हैं यू-चैनल जो उनके बीच जुड़ता है।

2 - (लंबाई?) कोण वाले सदस्य के लिए यू-चैनल, सामने से पीछे, सीधे कॉलम को जोड़ने। यह एक महत्वपूर्ण है, क्योंकि सर्वो सिटी/एक्टोबोटिक्स इस उद्देश्य के लिए 45 डिग्री कोण वाले पैनल या ब्रैकेट बेचता है, लेकिन आपको यह सुनिश्चित करने के लिए कुछ गणित/ट्रिग करना होगा कि आपको सही लंबाई मिलती है।

2 - (लंबाई?) यू-चैनल उच्च-स्तरीय साइड बंपर के रूप में काम करने के लिए, फिर से ये इस बात पर निर्भर करते हैं कि आप आधार के साथ क्या करते हैं

2 - (लंबाई?) यू-चैनल उच्च-स्तरीय फ्रंट और रियर बंपर के रूप में काम करने के लिए, ठीक उसी तरह से ऊपर।

1 - (लंबाई?) यू-चैनल शीर्षतम सदस्य के रूप में सेवा करने के लिए, पीछे के कॉलम में फैला हुआ है। यह बहुत महत्वपूर्ण नहीं हो सकता है, क्योंकि आप शीर्ष पर, या सीधे स्तंभों के सामने / पीछे माउंट कर सकते हैं।

12 (लगभग) एल-चैनल या कोष्ठक। ये कई उद्देश्यों की पूर्ति करते हैं लेकिन अनिवार्य रूप से आधार फ्रेम के कोनों और सीधे स्तंभों को संरचनात्मक अखंडता/ताकत प्रदान करते हैं।

४ (+?) ३-छेद से ५-छेद वाले फ्लैट-चैनल। ये रोबोट को संरचनात्मक ताकत भी प्रदान करते हैं।

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

एक 4(4.5?)"X 12" पैनल है, और मुझे लगता है कि दूसरा 9(9.5?)" X 12 पैनल है।

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

और बात यह है कि.. आप वास्तव में नहीं जानते कि आपको किन लोगों की आवश्यकता हो सकती है, या कितने की.. क्योंकि ऐसे कई तरीके हैं जिनसे आप इन टुकड़ों को एक साथ फिट कर सकते हैं।

मैं सूचीबद्ध कर सकता हूं कि मैंने क्या उपयोग किया है:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

निम्नलिखित दो बहुत आसान हैं, और मैं बस इन पर स्टॉक करूंगा:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

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

अंत में, आपको इनमें से 1 बैग मिलना चाहिए:

www.servocity.com/6-32-nylock-nuts-pack

मैंने बहुत से उपयोग नहीं किए, लेकिन वे (मुझे लगता है) यह सुनिश्चित करने के लिए महत्वपूर्ण हैं कि आपके मोटर समय के साथ फ्रेम से ढीले कंपन न करें। यू-चैनल के कारण प्रति मोटर केवल दो काम करेंगे

आपको इनमें से कम से कम 4 की आवश्यकता होगी, यदि आप एक को नुकसान पहुंचाते हैं तो आपको अतिरिक्त एक या तो मिल सकता है (मेरा विश्वास करो, आप मोटरों को कई बार चालू/बंद कर सकते हैं):

www.servocity.com/heavy-duty-clamping-shaf…

आम तौर पर, मोटर शाफ्ट 6 मिमी होते हैं, और धुरी 1/4 (0.25in) होती है।

मुझे कुछ काले पेंच मिलेंगे, माना जाता है कि वे मजबूत हैं, और उन्हें उपरोक्त क्लैंप के लिए उपयोग करते हैं, और उन शिकंजा का उपयोग नहीं करते हैं जो क्लैंप के साथ आते हैं:

(मुझे लगता है कि ये वही हैं):

4 - 1/4" (0.25") व्यास के बेयरिंग

1 - काले रंग का बैग 1/4 स्पेसर

4 - डी-हब क्लैंपिंग

www.servocity.com/0-770-clamping-d-hubs

4 - डी-शाफ्ट (#6340621.375" (1-3/8")

4 - 6 हैवी ड्यूटी व्हील्स

www.servocity.com/6-heavy-duty-wheel

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

इसके अलावा, वे आपके कालीन को खराब कर देंगे !!!

4 - मोटर्स:

www.servocity.com/motors-actuators/gear-mo…

मैं 223 आरपीएम के साथ गया, अच्छी शीर्ष इनडोर गति, धीमी गति में मेरे रोबोट (2 एसएलए 12 वी बैटरी के साथ भारी) को भी आसानी से स्थानांतरित कर सकता था।

2 - मोटर्स के लिए मोटर एनकोडर। (सर्वो सिटी का रोबोक्ला केवल 2 एन्कोडर संभालता है)

1 - रोबोक्लॉ 2X45A मोटर कंट्रोलर, सुनिश्चित करें कि आपको हरे रंग के टर्मिनल ब्लॉक वाला एक मिल जाए, न कि पिन…। खैर … प्रत्येक के अपने फायदे हैं। पिछली बार.. मुझे पिन मिल गए होंगे।

मुझे लगता है कि यह सर्वो सिटी से है।

SparkFun Arduino Uno (जो मैंने उपयोग किया है) और रेडबोर्ड आर्टेमिस को आपके ड्राइव मैनेजर के रूप में बेचता है।

आप अपने उच्च-स्तरीय "दिमाग" और इंटरफ़ेस के रूप में रास्पबेरी पाई 3 (या 4?) चाहते हैं।

आपको वायरिंग, स्विच, फ़्यूज़ और एक बहुत ही मजबूत "फ्लाईबैक" डायोड की आवश्यकता होगी।

मैंने एक Duracell 12V 14AH डीप-साइकिल SLA बैटरी का उपयोग किया, लेकिन आप जो भी उपयोग कर सकते हैं।

चेतावनी! इस रोबोट का डिज़ाइन (TALL, और WIDE, लेकिन SHORT), एक प्रकार का भारी गुरुत्वाकर्षण केंद्र मानता है, जैसे SLA बैटरी प्रदान करेगी। हो सकता है कि यह अन्य प्रकार की नई तकनीक वाले बैटरी पैक के साथ अच्छा न करे। लाइपो, शेर, आदि। यह आसानी से टिप सकता है।

पोलोलू से मुझे कुछ बैरल प्लग एडेप्टर मिले, ताकि मैं स्वतंत्र रूप से Arduino और/या रेडबोर्ड को पावर दे सकूं, भले ही वे USB के माध्यम से रास्पबेरी से जुड़े हों, क्योंकि मैं रास्पबेरी की शक्ति पर भरोसा नहीं करना चाहता था।. (विशेष रूप से बढ़ते कैमरे, सेंसर, आदि)

रास्पबेरी के लिए आपको 12-से-5V स्टेप डाउन वोल्टेज रेगुलेटर, न्यूनतम 5A (?) की आवश्यकता होगी। अन्य 7 से 15V के बीच कुछ भी सीधे SLA बैटरी से संभाल सकते हैं।

यह इसके बारे में भागों के लिए है।

मैं क्या नहीं करूँगा - 90 डिग्री बेवेल्ड गियरिंग।

फिर से, मेरी रोबोटिक्स यूट्यूब प्लेलिस्ट में उपरोक्त में से अधिकांश का विवरण देने वाले कई वीडियो हैं।

चरण 1: निर्माण

सच कहूँ तो, मेरे सभी निर्माण चरण पहले से ही youtube के रूप में हैं। आप उन्हें मेरी रोबोटिक्स प्लेलिस्ट में देख सकते हैं, जो "वालेस रोबोट 4" से शुरू होती है। पिछले वाले (वालेस II, वालेस III) में भी अच्छी सामग्री है

www.youtube.com/playlist?list=PLNKa8O7lX-w…

चरण 2: रोबोक्ला, मोटर्स और एनकोडर्स का परीक्षण करें

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

मेरे सुझाव का कारण (बाद में) एक अटके हुए रोबोट की जाँच करना है। यदि आगे/पीछे के पहिये मुड़ रहे हैं/नहीं मुड़ रहे हैं, तो तिरछे स्थिति का होना केवल आगे, या केवल पीछे से बेहतर हो सकता है।

नोट: मैंने जो नहीं किया है, वह Arduino का उपयोग एन्कोडर्स से (GPIO पिन के माध्यम से) कनेक्ट करने के लिए करना है - यदि आपने ऐसा किया है, तो आपके पास रोबोक्लॉ हैंडल 2 एन्कोडर हो सकते हैं, और फिर Arduino अन्य दो को संभाल सकता है, और बस इसके दो एन्कोडर मानों (और गति) के लिए रोबोक्ला से पूछें।

नोट: मैंने बेसिकमाइक्रो के एप्लिकेशन का उपयोग रोबोक्ला को रैंपिंग अप/रैंपिंग डाउन के लिए पूर्व-कॉन्फ़िगर करने के लिए किया था। यह हार्डवेयर और इलेक्ट्रॉनिक्स की सुरक्षा के लिए अच्छा है। मेरी रोबोटिक्स प्लेलिस्ट में इसके बारे में एक वीडियो है।

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

यदि यह एक समस्या बन जाती है, तो आप तारों को छोटा कर सकते हैं - आप धातु परिरक्षण (अमेज़ॅन से, 1 व्यास) भी खरीद सकते हैं।

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

मेरा लगभग 12 फीट से थोड़ा अधिक वक्र है लेकिन इतना नहीं है कि मुझे इसके बारे में कुछ भी करने की आवश्यकता महसूस हुई।

चरण 3: Arduino को जोड़ना और प्रोग्रामिंग करना

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

आपको Arduino IDE डाउनलोड करना होगा।

यहाँ जीथब में नवीनतम स्केच है जो रोबोट को चलाने का काम करता है:

github.com/elicorrales/wallace.robot.ardui…

आप Arduino को IDE चलाने वाले अपने कंप्यूटर से कनेक्ट करेंगे, और स्केच कैसे लिखा जाता है, इसके आधार पर, आप रोबोक्ला के साथ सीरियल संचार (सॉफ़्टवेयर सीरियल) के लिए Arduino पर पिन 10 और 11 का उपयोग करेंगे।

मैंने रास्पबेरी पाई और अरुडिनो के बीच एक सरल संचार प्रोटोकॉल विकसित किया।

यह ASCII- चरित्र आधारित है, जो केवल Arduino IDE की "सीरियल मॉनिटर" विंडो का उपयोग करके डीबग करना और परीक्षण करना आसान बनाता है।

आदेश संख्या "0" (शून्य) से शुरू होते हैं और आवश्यकतानुसार ऊपर जाते हैं

"20" से शुरू होने वाले आदेश प्रत्यक्ष रोबोक्ला कमांड हैं, और उस संख्या के नीचे वाले सख्ती से Arduino- संबंधित आदेश हैं।

ईएमआई शोर के कारण, मैंने चेकसम को शामिल करने के लिए कमांड स्ट्रिंग में सुधार किया।

तो, किसी भी स्ट्रिंग में शामिल होंगे:

# इस सहित स्ट्रिंग में टोकन की संख्या

चेकसम

उदाहरण के लिए, मान लें कि आप चाहते हैं कि Arduino इसके आदेशों के मेनू के साथ प्रतिक्रिया करे:

4 0 12 16

"4" स्ट्रिंग में चार टोकन है।

"0" मेनू कमांड है।

"12" मेरे द्वारा चुनी गई यादृच्छिक संख्या है।

"16" 4 + 0 + 12 का योग है।

वही MENU कमांड अलग हो सकता है:

4 0 20 24

क्योंकि मैंने एक अलग यादृच्छिक संख्या चुनी है, चेकसम भी अलग है।

उदाहरण के लिए, मान लें कि आप 100% गति से आगे बढ़ना चाहते हैं:

5 29 0 134 100

"5" पांच टोकन

"29" फॉरवर्ड कमांड

"0" यादृच्छिक संख्या

"134" चेकसम

"100" पैरामीटर 1 (इस मामले में गति)

यदि Arduino उस आने वाली स्ट्रिंग को सत्यापित नहीं कर सकता है, तो वह इसे छोड़ देता है/इसे अनदेखा करता है, कोई प्रतिक्रिया नहीं।

यदि Arduino को X मिलीसेकंड के साथ अगला मूवमेंट कमांड प्राप्त नहीं होता है, तो यह रोबोक्लॉ को STOP मोटर्स भेजता है।

Arduino शुरू होता है और USB पोर्ट पर एक ऑटो-स्टेटस भेजना शुरू कर देता है … जब तक कि ऐसा करना बंद करने के लिए नहीं कहा जाता।

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

चरण 4: रास्पबेरी पाई को जोड़ना और प्रोग्रामिंग करना (नोड.जेएस)

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

एक बात जिस पर मैंने गौर किया होगा, वह यह है कि आपको 5V रेगुलेटर की आवश्यकता होगी, और या तो किसी तरह इसके लिए USB केबल का निर्माण, कट/संशोधन करना होगा, या रास्पबेरी को दूसरे तरीके से पावर देना होगा।

यहां जीथब में वह सब कुछ है जो आपको यूएसबी के माध्यम से Arduino के साथ संवाद करने के लिए रास्पबेरी में चाहिए।

github.com/elicorrales/wallace.robot.raspb…

यहां तक कि टेस्ट स्क्रिप्ट भी हैं।

आप नोड.जेएस सर्वर कोड पर एक नज़र डाल सकते हैं और आप देखेंगे कि रास्पबेरी कैसे संक्षिप्त संख्यात्मक निर्देशों को आरईएसटी-प्रकार यूआरएल स्ट्रिंग्स में परिवर्तित करता है। आप परीक्षण आदेश भेजने के लिए "कर्ल" का उपयोग कर सकते हैं।

उदाहरण:

आपका RP3 IP पता:8084/arduino/api/forward/50

मोटरों को पल-पल पहियों को आगे की ओर घुमाने का कारण बनेगा।

यदि आप इसे शेल स्क्रिप्ट लूप में रखते हैं, तो आप देखेंगे कि पहिए घूमते रहते हैं।

नोड.जेएस कोड (सर्वर.जेएस) में एक पुन: कनेक्शन सुविधा शामिल होती है, यदि सीरियल कॉम Arduino से खो जाते हैं। आप रास्पबेरी से Arduino को अनप्लग करके और इसे फिर से प्लग करके इसका परीक्षण कर सकते हैं।

सुनिश्चित करें कि आप दोनों के बीच सीरियल बॉड रेट से मेल खाते हैं।

Arduino डेटा के खराब पैकेट छोड़ने के कारण, और नोड.जेएस स्तर पर, और ब्राउज़र जावास्क्रिप्ट स्तर पर, कई "ड्राइव" कमांड भेजने के लिए सब कुछ कोडित किया गया है, मैं 2 000 000 बॉड के रूप में उच्च चलाने में सक्षम हूं (2 एमबीपीएस)।

यदि आपको परीक्षण स्क्रिप्ट चलाने के लिए मिलता है और आप पहियों को घूमते हुए देख रहे हैं, तो आप अगले चरण के लिए तैयार हैं।

चरण 5: अंतिम चरण - प्रोग्रामिंग / वेब पेज क्लाइंट का उपयोग करना

इस सब के रास्पबेरी हिस्से के लिए जीथब लिंक में शामिल हैं, क्लाइंट फाइलें हैं।

index.html. अनुक्रमणिका.जे.एस. p5.मिनट.जे.एस.

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

जॉयस्टिक में से किसी एक के लिए जावास्क्रिप्ट कोड क्वेरी (चुनाव) एक्स- और वाई-अक्ष मान.. (आपके पास कौन से जॉयस्टिक/गेमपैड के आधार पर, आपको कोड को ट्विक करना पड़ सकता है)। यह बहुत तेजी से मतदान करता है, और यह उन सभी मानों को ८०८४ पर सुनने वाले नोड.जेएस सर्वर पर निकाल देता है।

जॉयस्टिक के अपरिष्कृत X- और Y-अक्ष मान 0 और 1 के बीच हैं।

लेकिन मोटरों को चलाने के लिए Arduino में इस्तेमाल किया जा रहा रोबोक्ला मोटर कंट्रोलर लाइब्रेरी फ़ंक्शन, -100 से 0 (पिछड़े) या (0 से 100) आगे के मान की अपेक्षा करता है।

सू…. p5.min.js को शामिल करने का यही उद्देश्य है। ऐसा होता है कि यह बहुत अच्छा, सुविधाजनक नक्शा() फ़ंक्शन होता है जहां आप इसे कच्चा मान देते हैं, यह कच्ची (वर्तमान) सीमा होती है, और नई, वांछित सीमा होती है। और यह कच्चे मूल्य को नई, मैप की गई सीमा में मूल्य में परिवर्तित करता है।

एक और बिंदु: 100 गति पर, रोबोट बहुत मुश्किल हो सकता है। मैं लगातार किसी चीज में भाग रहा था। लेकिन जैसे-जैसे आप इसमें बेहतर होते जाते हैं, बाएं या दाएं घुमाते समय भी यह स्पर्शपूर्ण होता है।

आपके लिए जोड़ने के लिए कुछ वेब पेज पर वर्तमान मैक्स स्पीड स्लाइडर के समान होगा। वह स्लाइडर निर्धारित करता है कि आप जॉयस्टिक Xs और Ys को मैप करने के लिए उच्चतम या अधिकतम मूल्य क्या है।

उदाहरण:

मान लें कि आप 0 -> 1 से 0 -> 100 की मैपिंग कर रहे हैं। जब आप जॉयस्टिक को पूर्ण विराम देते हैं, तो आप 100 पर होते हैं। मार्मिक। बहुत तेज हो सकता है।

लेकिन, अगर आप उस मैक्स स्पीड स्लाइडर को थोड़ा पीछे खिसकाते हैं, तो अब आप 0 -> 1 से 0 -> 80 या 70 की मैपिंग कर रहे हैं।

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

और इसके अलावा आप Xs (बाएं या दाएं घुमाएं) को Ys (आगे या पीछे) से अपनी अधिकतम उपलब्ध गति में अलग कर सकते हैं।

इस प्रकार, आप तेज़ रैखिक गति के लिए Ys को 0 से 100, 0 से -100 पर छोड़ सकते हैं, लेकिन अधिक नियंत्रित घूर्णी गति के लिए Xs अधिकतम गति को कम कर सकते हैं। दोनों ओर से लाभदायक।

चरण 6: वैकल्पिक: माउस ड्रैग और / या टच इवेंट के साथ ड्राइव रोबोट

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

इसके अलावा, आप तब जानते हैं कि जॉयस्टिक के Xs और Ys ऋणात्मक 1 हैं, शून्य से प्लस 1 तक, उन्हें शून्य और 100 के बीच परिवर्तित करना होगा। खैर, अधिकतम वेब पेज पर अधिकतम गति सेटिंग पर निर्भर करता है।

सू … माउस, या टच इवेंट्स (जैसे स्मार्टफोन पर) का उपयोग करने के लिए केवल एक चीज है, उन घटनाओं को कैप्चर करना, Xs और Ys को पकड़ना।

लेकिन ---- वे एक्स और वाई नकारात्मक 1 और 1 के बीच नहीं हैं। वे 0 शुरू करते हैं और सकारात्मक रूप से बढ़ते हैं, क्योंकि वे अनिवार्य रूप से कुछ HTML तत्व (जैसे बूटस्ट्रैप पैनल) या कैनवास के पिक्सेल या सापेक्ष स्क्रीन निर्देशांक हैं।

तो वहाँ फिर से, P5 की Js लाइब्रेरी का "मैप ()" फ़ंक्शन हमें जो चाहिए उसे फिर से मैप करने के लिए बहुत आसान है।

मैंने दो अलग-अलग वेब पेजों के लिए कोड को फिर से तैयार किया, एक गेमपैड का उपयोग करने वाले डेस्कटॉप के लिए, दूसरा मोबाइल के लिए, टच इवेंट्स का उपयोग करके।

साथ ही, एक बार Xs और Ys को फिर से मैप करने के बाद, उन्हें कोड की एक ही श्रृंखला में फीड किया जाता है, आदि, जैसे कि गेमपैड से Xs और Ys हैं।

सिफारिश की: