नियंत्रक का उपयोग करके किसी कार्य को पूरा करने के लिए अपने रोबोट को चलाना और ले जाना आसान हो सकता है। हालाँकि, ड्राइव प्रोग्राम का उपयोग करने की अपनी सीमाएँ हैं, और आपके रोबोट निर्माण या कार्य के आधार पर, आपको अलग-अलग नियंत्रणों की आवश्यकता हो सकती है। नियंत्रक को कोड करने से आप नियंत्रक को अनुकूलित कर सकते हैं, जिससे यह आपके रोबोट और कार्य के लिए बेहतर रूप से उपयुक्त हो सके। VEXcode IQ में नियंत्रक को कोड करने के कई तरीके हैं। प्रत्येक के अपने फायदे और सीमाएं हैं, और कुछ विधियां वांछित परिणाम के आधार पर कुछ स्थितियों के लिए बेहतर अनुकूल हैं।
यह आलेख आपको VEXcode IQ में नियंत्रक को कस्टम कोडिंग के लिए तीन अलग-अलग विकल्पों के बारे में बताएगा। प्रत्येक विधि का वर्णन उसके लाभों, सीमाओं और उपयोग के उदाहरण के साथ किया जाएगा, ताकि विधि चुनते समय आपको मार्गदर्शन मिल सके। इस लेख के प्रयोजनों के लिए, दिखाए गए सभी कोड उदाहरण क्लॉबोट के लिए बनाए गए थे। हालाँकि, समान अवधारणाओं को पर पाए जाने वाले कई अन्य बिल्ड और कस्टम बिल्ड पर लागू किया जा सकता है।
विकल्प 1: डिवाइस कॉन्फ़िगरेशन में बटन निर्दिष्ट करना
यह विकल्प तब बहुत अच्छा होता है जब आप बेसबॉट या क्लॉबॉट जैसे मानक बिल्ड का उपयोग कर रहे हों, और उसे शीघ्रता से चलाना चाहते हों।
यह विकल्प आपको डिवाइस कॉन्फ़िगरेशन में नियंत्रक पर बटनों को मोटर, ड्राइवट्रेन या मोटर समूह निर्दिष्ट करने देता है। डिवाइस कॉन्फ़िगरेशन में नियंत्रक को बटन असाइन करने के तरीके के बारे में अधिक जानकारी के लिए, यह आलेख देखें.
विकल्प 1 का सारांश: डिवाइस कॉन्फ़िगरेशन में बटन निर्दिष्ट करना
|
लाभ |
सीमाएँ |
उदाहरण स्थिति |
|---|---|---|
|
|
|
विकल्प 2: फॉरएवर लूप का उपयोग करना
यदि आप मानक बिल्ड के बजाय कस्टम बिल्ड का उपयोग कर रहे हैं, या अपने कंट्रोलर में अधिक अनुकूलन करना चाहते हैं, तो यह विकल्प अच्छा है। फॉरएवर लूप का उपयोग करना आपके कंट्रोलर के लिए कस्टम कोड बनाने का एक बढ़िया परिचय है।
यह विकल्प नियंत्रक और उससे संबंधित बटनों के लिए सभी शर्तों को फॉरएवर लूप में रखता है। इससे अधिक लचीलापन मिलता है, विशेष रूप से कस्टम बिल्ड डिजाइन के साथ, लेकिन इसके लिए कुछ कोडिंग अनुभव की भी आवश्यकता होती है। हालाँकि, इस विकल्प का उपयोग करते समय एक बात ध्यान में रखनी होगी कि आपकी परियोजना कितनी लंबी और जटिल है। जितनी अधिक शर्तें जोड़ी जाएंगी, कोड स्टैक उतना ही लंबा हो जाएगा। इसका मतलब यह है कि कई ब्लॉकों को क्रम में निष्पादित करना होगा, और जब बहुत सारे ब्लॉक होंगे, तो इससे परियोजना का निष्पादन धीमा हो सकता है। धीमी परियोजना निष्पादन के कारण नियंत्रक बटन दबाने और रोबोट व्यवहार को देखने के बीच अंतराल उत्पन्न हो सकता है।
नीचे दर्शाया गया विशिष्ट उदाहरण एक तरीका है जिससे आप एक कस्टम डिजाइन रोबोट (जैसे कि एक कस्टम ड्राइवट्रेन वाला रोबोट) के साथ फॉरएवर लूप का उपयोग कर सकते हैं, ताकि रोबोट को चलाया जा सके और वस्तुओं के साथ बातचीत करने के लिए पंजे और हाथ में हेरफेर किया जा सके।
"विकल्प 2" VEXcode IQ (दूसरी पीढ़ी) परियोजना फ़ाइल डाउनलोड करें >
नोट: यदि प्रथम पीढ़ी के क्लॉबोट का उपयोग किया जा रहा है तो उपरोक्त परियोजना के अनुसार कार्य करने के लिए डिवाइस कॉन्फ़िगरेशन में आर्म मोटर को उलटना होगा।
विकल्प 2 कोड का स्पष्टीकरण.
|
कोड टुकड़ा |
स्पष्टीकरण |
|---|---|
|
इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे। |
|
|
|
इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे। फॉरएवर लूप का उपयोग यह जांचने के लिए किया जाता है कि नियंत्रक पर कौन से बटन दबाए जा रहे हैं। [मोटर वेग सेट करें] ब्लॉक का उपयोग मोटर वेग को A और D अक्षों के साथ वर्तमान नियंत्रक की स्थिति पर सेट करने के लिए किया जाता है। यह कार को ड्राइव में सेट करने के बराबर है। इससे कार जरूरी रूप से नहीं चलती, बल्कि यह उसे बस गति प्रदान करती है। प्रत्येक जॉयस्टिक अक्ष -100 से +100 के बीच मान लौटाता है, तथा केन्द्रित होने पर शून्य मान लौटाता है। इसका अर्थ यह है कि जॉयस्टिक अक्ष को धकेलने पर यह -100% से 100% के बराबर हो जाता है। अक्षों को 100 या -100 की ओर जितना अधिक धकेला जाएगा, मोटर उतनी ही तेजी से घूमेगी। फिर [स्पिन] ब्लॉक का उपयोग मोटर को वास्तव में चलाने के लिए किया जाता है। यह दिशा निर्धारित हो जाने के बाद कार में गैस दबाने के बराबर है। इससे प्रत्येक मोटर को चार नियंत्रक अक्षों में से एक द्वारा नियंत्रित किया जा सकता है। |
|
इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे। [यदि तो अन्यथा यदि तो अन्यथा] ब्लॉक का उपयोग नियंत्रक पर दबाए जाने या छोड़े जाने वाले बटनों के लिए कुछ व्यवहारों को मैप करने के लिए किया जाता है। कोड के इस भाग में, निर्धारित शर्तें यह हैं कि क्या E अप या E डाउन बटन दबाया जाता है। यदि ऐसा है, तो कुछ निश्चित व्यवहार होंगे, जैसे कि हाथ को ऊपर उठाना और नीचे करना। इस शर्त का एक और भाग भी है, यदि कोई भी बटन नहीं दबाया जाता है, तो भुजा का हिलना बंद हो जाता है। ध्यान दें कि क्लॉ के लिए परियोजना में कोड का निम्नलिखित भाग भी इसी स्पष्टीकरण का अनुसरण करता है। |
विकल्प 2 का सारांश: फॉरएवर लूप का उपयोग करना
|
लाभ |
सीमाएँ |
उदाहरण स्थिति |
|---|---|---|
|
|
|
विकल्प 3: ईवेंट का उपयोग करना
यदि आप अपने कंट्रोलर में बहुत सारे अनुकूलन चाहते हैं, तो इवेंट्स का उपयोग करना आपके लिए सबसे अच्छा विकल्प है। एक बटन दबाने से रोबोट के कई व्यवहार सक्रिय हो सकते हैं, जैसे कि पंजा खोलने के लिए बटन दबाना, हाथ उठाना, तथा एक निश्चित दूरी तक आगे बढ़ना। फॉरएवर लूप के भीतर प्रति बटन एकाधिक व्यवहारों को कोड करने का प्रयास करने से परियोजना का निष्पादन नाटकीय रूप से धीमा हो जाएगा - ईवेंट का उपयोग करने से आप इसे अधिक प्रभावी ढंग से कर सकते हैं।
यह विकल्प प्रोजेक्ट प्रवाह को विभाजित करने के लिए ईवेंट का उपयोग करता है। यह फॉरएवर लूप के उपयोग के समान है, लेकिन इससे कोड को अधिक व्यवस्थित किया जा सकता है, जिससे बटन निष्पादन की प्रतिक्रिया समय तेज हो जाता है। तीव्र प्रतिक्रिया समय का अर्थ है कि आपको नियंत्रक बटन दबाने और रोबोट के व्यवहार को देखने के बीच कोई अंतराल नहीं दिखेगा। यह उदाहरण पिछले प्रोजेक्ट के समान ही व्यवहार दिखाता है, लेकिन फॉरएवर लूप के बजाय इवेंट्स का उपयोग करके किया गया है।
"विकल्प 3" VEXcode IQ (दूसरी पीढ़ी) परियोजना फ़ाइल डाउनलोड करें >
नोट: यदि प्रथम पीढ़ी के क्लॉबोट का उपयोग किया जा रहा है तो उपरोक्त परियोजना के अनुसार कार्य करने के लिए डिवाइस कॉन्फ़िगरेशन में आर्म मोटर को उलटना होगा।
विकल्प 3 कोड का स्पष्टीकरण.
|
कोड टुकड़ा |
स्पष्टीकरण |
|---|---|
|
इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे। |
|
|
|
इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे। {When controller axis} इवेंट ब्लॉक का उपयोग कुछ व्यवहारों को ट्रिगर करने के लिए किया जाता है जब नियंत्रक पर चार अक्षों में से एक को जॉयस्टिक का उपयोग करके बदला जाता है। [मोटर वेग सेट करें] ब्लॉक का उपयोग मोटर वेग को A और D अक्षों के साथ वर्तमान नियंत्रक की स्थिति पर सेट करने के लिए किया जाता है। यह कार को ड्राइव में सेट करने के बराबर है। इससे कार जरूरी रूप से नहीं चलती, बल्कि यह उसे बस गति प्रदान करती है। प्रत्येक जॉयस्टिक अक्ष -100 से +100 के बीच मान लौटाता है, तथा केन्द्रित होने पर शून्य मान लौटाता है। इसका अर्थ यह है कि जॉयस्टिक अक्ष को धकेलने पर यह -100% से 100% के बराबर हो जाता है। अक्षों को 100 या -100 की ओर जितना अधिक धकेला जाएगा, मोटर उतनी ही तेजी से घूमेगी। फिर [स्पिन] ब्लॉक का उपयोग मोटर को वास्तव में चलाने के लिए किया जाता है। यह दिशा निर्धारित हो जाने के बाद कार में गैस दबाने के बराबर है। इससे प्रत्येक मोटर को चार नियंत्रक अक्षों में से एक द्वारा नियंत्रित किया जा सकता है। |
|
इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे। {When controller axis} इवेंट ब्लॉक का उपयोग नियंत्रक पर दबाए जाने या छोड़े जाने वाले बटनों के लिए कुछ व्यवहारों को मैप करने के लिए किया जाता है। कोड के इस भाग में, निर्धारित शर्तें यह हैं कि क्या E अप या E डाउन बटन दबाया जाता है। यदि ऐसा है, तो कुछ निश्चित व्यवहार होंगे, जैसे कि हाथ को ऊपर उठाना, नीचे करना, या रुकना। ध्यान दें कि क्लॉ के लिए परियोजना में कोड का अंतिम भाग भी इसी स्पष्टीकरण का अनुसरण करता है। |
विकल्प 3 का सारांश: ईवेंट का उपयोग करना
|
लाभ |
सीमाएँ |
उदाहरण स्थिति |
|---|---|---|
|
|
|