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

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

विकल्प 1: डिवाइस कॉन्फ़िगरेशन में बटन निर्दिष्ट करना

यह विकल्प तब बहुत अच्छा होता है जब आप बेसबॉट या क्लॉबॉट जैसे मानक बिल्ड का उपयोग कर रहे हों, और उसे शीघ्रता से चलाना चाहते हों।

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

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

विकल्प 1 का सारांश: डिवाइस कॉन्फ़िगरेशन में बटन निर्दिष्ट करना

लाभ

सीमाएँ

उदाहरण स्थिति

  • बिना कोडिंग के त्वरित सेटअप
  • सबसे सरल विधि
  • आसानी से समायोज्य
  • बटनों को अलग-अलग मोटर, एक मानक ड्राइवट्रेन और मोटर समूह असाइन कर सकते हैं
  • बटन असाइनमेंट नियंत्रक पर बटनों की संख्या तक सीमित हैं
  • ड्राइवट्रेन में 4 मोटरों से अधिक नहीं हो सकता या उसे अनुकूलित नहीं किया जा सकता (केवल मानक ड्राइव समर्थित है, H ड्राइव, होलोनोमिक या अन्य कस्टम ड्राइवट्रेन समर्थित नहीं है)
  • किसी मानक बिल्ड जैसे बेसबॉट, क्लॉबॉट, या उन मानक बिल्डों में सरल संशोधन में हेरफेर करना। उदाहरण के लिए, एक बेसबोट जिसमें आगे की ओर एक इनटेक लगा होता है जिसे मोटर समूह द्वारा नियंत्रित किया जाता है।
  • रोबोट पर विभिन्न व्यवहारों के अनुरूप बटनों को बिना अधिक कोडिंग के शीघ्रता से नियंत्रित करना

विकल्प 2: फॉरएवर लूप का उपयोग करना

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

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

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

VEXcode IQ वर्कस्पेस में ऑप्शन 2 ब्लॉक्स प्रोजेक्ट खुला हुआ है। इस प्रोजेक्ट में ब्लॉकों का एक समूह है और इसमें कॉन्फ़िगर किए गए उपकरण हैं। साइड में डिवाइसेस मेनू खुलता है और उसमें निम्नलिखित डिवाइसेस सूचीबद्ध होती हैं: IQ 2nd जनरेशन ब्रेन, पोर्ट 4 पर क्लॉमोटर, पोर्ट 10 पर आर्ममोटर, कंट्रोलर, पोर्ट 1 पर लेफ्टमोटर और पोर्ट 6 पर राइटमोटर। अंत में, कंट्रोलर इनपुट को संभालने के लिए ब्लॉकों का एक समूह होता है। स्टैक में लिखा है कि शुरू होने पर, आर्ममोटर को रोकने के लिए होल्ड पर सेट करें और क्लॉमोटर को रोकने के लिए होल्ड पर सेट करें। स्टैक का शेष भाग एक फॉरएवर लूप में समाहित है। इसमें लिखा है, "फॉरएवर, लेफ्ट मोटर की गति को कंट्रोलर A की स्थिति % पर सेट करें, लेफ्ट मोटर को आगे की ओर घुमाएं, राइट मोटर की गति को कंट्रोलर D की स्थिति % पर सेट करें, और राइट मोटर को आगे की ओर घुमाएं।" इसके बाद, यदि कंट्रोलर E को ऊपर की ओर दबाया जाता है तो आर्ममोटर को ऊपर की ओर घुमाएं, अन्यथा यदि कंट्रोलर E को नीचे की ओर दबाया जाता है तो आर्ममोटर को नीचे की ओर घुमाएं, अन्यथा आर्ममोटर को रोक दें। अंत में, यदि कंट्रोलर का F अप बटन दबाया जाता है तो क्लॉमोटर को घुमाकर खोलें, अन्यथा यदि कंट्रोलर का F डाउन बटन दबाया जाता है तो क्लॉमोटर को घुमाकर बंद करें, और अन्यथा क्लॉमोटर को रोक दें।

"विकल्प 2" VEXcode IQ (दूसरी पीढ़ी) परियोजना फ़ाइल डाउनलोड करें >

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

विकल्प 2 कोड का स्पष्टीकरण.

कोड टुकड़ा

स्पष्टीकरण

ऑप्शन 2 VEXcode IQ प्रोजेक्ट में ब्लॉक के ढेर का क्लोज-अप दृश्य। दो ब्लॉक हाइलाइट किए गए हैं और स्टैक के फॉरएवर लूप के बाहर हैं, वे सेट आर्ममोटर स्टॉपिंग टू होल्ड और सेट क्लॉमोटर स्टॉपिंग टू होल्ड पढ़ते हैं।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

ऑप्शन 2 VEXcode IQ प्रोजेक्ट में ब्लॉक के ढेर का क्लोज-अप दृश्य। स्टैक के फॉरएवर लूप के अंदर चार ब्लॉक हाइलाइट किए गए हैं। वे फॉरएवर पढ़ते हैं, लेफ्ट मोटर की गति को कंट्रोलर ए की स्थिति % पर सेट करते हैं, लेफ्ट मोटर को आगे की ओर घुमाते हैं, राइट मोटर की गति को कंट्रोलर डी की स्थिति % पर सेट करते हैं, और राइट मोटर को आगे की ओर घुमाते हैं। आईक्यू (दूसरी पीढ़ी) कंट्रोलर का आरेख जिसमें इसके बटन और जॉयस्टिक अंकित हैं। यह दृश्य कंट्रोलर के सामने से लिया गया है। बाएं जॉयस्टिक के अक्षों को A और B के रूप में चिह्नित किया गया है। बाएं जॉयस्टिक के केंद्र बटन को L3 के रूप में चिह्नित किया गया है। बाएं जॉयस्टिक के नीचे स्थित दो गोल बटनों पर E Up और E Down लिखा हुआ है। दाएँ जॉयस्टिक के अक्षों को C और D के रूप में चिह्नित किया गया है। दाएँ जॉयस्टिक के केंद्र बटन को R3 के रूप में चिह्नित किया गया है। राइट जॉयस्टिक के नीचे स्थित दो गोल बटनों पर F Up और F Down लिखा हुआ है।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

फॉरएवर लूप का उपयोग यह जांचने के लिए किया जाता है कि नियंत्रक पर कौन से बटन दबाए जा रहे हैं।

[मोटर वेग सेट करें] ब्लॉक का उपयोग मोटर वेग को A और D अक्षों के साथ वर्तमान नियंत्रक की स्थिति पर सेट करने के लिए किया जाता है। यह कार को ड्राइव में सेट करने के बराबर है। इससे कार जरूरी रूप से नहीं चलती, बल्कि यह उसे बस गति प्रदान करती है।

प्रत्येक जॉयस्टिक अक्ष -100 से +100 के बीच मान लौटाता है, तथा केन्द्रित होने पर शून्य मान लौटाता है। इसका अर्थ यह है कि जॉयस्टिक अक्ष को धकेलने पर यह -100% से 100% के बराबर हो जाता है। अक्षों को 100 या -100 की ओर जितना अधिक धकेला जाएगा, मोटर उतनी ही तेजी से घूमेगी।

फिर [स्पिन] ब्लॉक का उपयोग मोटर को वास्तव में चलाने के लिए किया जाता है। यह दिशा निर्धारित हो जाने के बाद कार में गैस दबाने के बराबर है। इससे प्रत्येक मोटर को चार नियंत्रक अक्षों में से एक द्वारा नियंत्रित किया जा सकता है।

ऑप्शन 2 VEXcode IQ प्रोजेक्ट में ब्लॉक के ढेर का क्लोज-अप दृश्य। स्टैक के फॉरएवर लूप के अंदर एक इफ, एल्स इफ, एल्स ब्लॉक को हाइलाइट किया गया है। इसका मतलब है कि यदि कंट्रोलर E अप बटन दबाया जाता है तो आर्ममोटर को ऊपर की ओर घुमाएं, अन्यथा यदि कंट्रोलर E डाउन बटन दबाया जाता है तो आर्ममोटर को नीचे की ओर घुमाएं, और अन्यथा आर्ममोटर को रोक दें।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

[यदि तो अन्यथा यदि तो अन्यथा] ब्लॉक का उपयोग नियंत्रक पर दबाए जाने या छोड़े जाने वाले बटनों के लिए कुछ व्यवहारों को मैप करने के लिए किया जाता है। कोड के इस भाग में, निर्धारित शर्तें यह हैं कि क्या E अप या E डाउन बटन दबाया जाता है। यदि ऐसा है, तो कुछ निश्चित व्यवहार होंगे, जैसे कि हाथ को ऊपर उठाना और नीचे करना। इस शर्त का एक और भाग भी है, यदि कोई भी बटन नहीं दबाया जाता है, तो भुजा का हिलना बंद हो जाता है।

ध्यान दें कि क्लॉ के लिए परियोजना में कोड का निम्नलिखित भाग भी इसी स्पष्टीकरण का अनुसरण करता है।

विकल्प 2 का सारांश: फॉरएवर लूप का उपयोग करना

लाभ

सीमाएँ

उदाहरण स्थिति

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

विकल्प 3: ईवेंट का उपयोग करना

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

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

VEXcode IQ वर्कस्पेस में ऑप्शन 3 ब्लॉक्स प्रोजेक्ट खुला हुआ है। इस प्रोजेक्ट में ब्लॉक के 11 छोटे ढेर हैं और इसमें कॉन्फ़िगर किए गए उपकरण हैं। साइड में डिवाइसेस मेनू खुलता है और उसमें निम्नलिखित डिवाइसेस सूचीबद्ध होती हैं: IQ 2nd जनरेशन ब्रेन, पोर्ट 4 पर क्लॉमोटर, पोर्ट 10 पर आर्ममोटर, कंट्रोलर, पोर्ट 1 पर लेफ्टमोटर और पोर्ट 6 पर राइटमोटर। अंत में, ब्लॉक के 11 छोटे ढेर हैं जो कंट्रोलर इनपुट को संभालते हैं। पहले स्टैक में लिखा है कि शुरू होने पर, आर्ममोटर को रोकने के लिए होल्ड पर सेट करें और फिर क्लॉमोटर को रोकने के लिए होल्ड पर सेट करें। दूसरे स्टैक में लिखा है कि जब कंट्रोलर अक्ष A को बदला जाता है, तो लेफ्ट मोटर की गति को कंट्रोलर A की स्थिति % पर सेट करें और फिर लेफ्ट मोटर को आगे की ओर घुमाएं। तीसरे स्टैक में लिखा है कि जब कंट्रोलर D को बदला जाता है, तो राइट मोटर की गति को कंट्रोलर D की स्थिति के प्रतिशत पर सेट करें और फिर राइट मोटर को आगे की ओर घुमाएं। चौथे स्टैक में लिखा है कि जब कंट्रोलर बटन E ऊपर दबाया जाता है, तो आर्ममोटर को ऊपर की ओर घुमाएं। पांचवें स्टैक में लिखा है कि जब कंट्रोलर बटन E ऊपर छोड़ा जाए, तो आर्ममोटर को रोकें। छठे स्टैक में लिखा है कि जब कंट्रोलर बटन E डाउन दबाया जाता है, तो आर्ममोटर को नीचे की ओर घुमाएं। सातवें स्टैक में लिखा है कि जब कंट्रोलर बटन E डाउन छोड़ा जाए, तो आर्ममोटर को रोकें। आठवें स्टैक में लिखा है कि जब कंट्रोलर बटन F ऊपर दबाया जाता है, तो क्लॉमोटर को घुमाकर खोलें। नौवें स्टैक में लिखा है कि जब कंट्रोलर बटन F अप छोड़ा जाए, तो क्लॉमोटर को रोकें। दसवें स्टैक में लिखा है कि जब कंट्रोलर बटन F डाउन दबाया जाता है, तो क्लॉमोटर को बंद कर दें। ग्यारहवें और अंतिम स्टैक में लिखा है, "जब कंट्रोलर बटन F डाउन छोड़ा जाए, तो क्लॉमोटर को रोकें।"

"विकल्प 3" VEXcode IQ (दूसरी पीढ़ी) परियोजना फ़ाइल डाउनलोड करें >

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

विकल्प 3 कोड का स्पष्टीकरण.

कोड टुकड़ा

स्पष्टीकरण

ऑप्शन 3 VEXcode IQ प्रोजेक्ट में ब्लॉक के एक ढेर का क्लोज-अप दृश्य। स्टैक में लिखा है कि शुरू होने पर, आर्ममोटर को रोकने के लिए होल्ड पर सेट करें और फिर क्लॉमोटर को रोकने के लिए होल्ड पर सेट करें।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

ऑप्शन 3 VEXcode IQ प्रोजेक्ट में ब्लॉक के दो ढेरों का क्लोज-अप दृश्य। पहले स्टैक में लिखा है कि जब कंट्रोलर अक्ष A को बदला जाता है, तो बाएं मोटर की गति को कंट्रोलर A की स्थिति % पर सेट करें और फिर बाएं मोटर को आगे की ओर घुमाएं। दूसरे स्टैक में लिखा है कि जब कंट्रोलर अक्ष D को बदला जाता है, तो राइट मोटर की गति को कंट्रोलर D स्थिति % पर सेट करें और फिर राइट मोटर को आगे की ओर घुमाएं। आईक्यू (दूसरी पीढ़ी) कंट्रोलर का आरेख जिसमें इसके बटन और जॉयस्टिक अंकित हैं। यह दृश्य कंट्रोलर के सामने से लिया गया है। बाएं जॉयस्टिक के अक्षों को A और B के रूप में चिह्नित किया गया है। बाएं जॉयस्टिक के केंद्र बटन को L3 के रूप में चिह्नित किया गया है। बाएं जॉयस्टिक के नीचे स्थित दो गोल बटनों पर E Up और E Down लिखा हुआ है। दाएँ जॉयस्टिक के अक्षों को C और D के रूप में चिह्नित किया गया है। दाएँ जॉयस्टिक के केंद्र बटन को R3 के रूप में चिह्नित किया गया है। राइट जॉयस्टिक के नीचे स्थित दो गोल बटनों पर F Up और F Down लिखा हुआ है।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

{When controller axis} इवेंट ब्लॉक का उपयोग कुछ व्यवहारों को ट्रिगर करने के लिए किया जाता है जब नियंत्रक पर चार अक्षों में से एक को जॉयस्टिक का उपयोग करके बदला जाता है।

[मोटर वेग सेट करें] ब्लॉक का उपयोग मोटर वेग को A और D अक्षों के साथ वर्तमान नियंत्रक की स्थिति पर सेट करने के लिए किया जाता है। यह कार को ड्राइव में सेट करने के बराबर है। इससे कार जरूरी रूप से नहीं चलती, बल्कि यह उसे बस गति प्रदान करती है।

प्रत्येक जॉयस्टिक अक्ष -100 से +100 के बीच मान लौटाता है, तथा केन्द्रित होने पर शून्य मान लौटाता है। इसका अर्थ यह है कि जॉयस्टिक अक्ष को धकेलने पर यह -100% से 100% के बराबर हो जाता है। अक्षों को 100 या -100 की ओर जितना अधिक धकेला जाएगा, मोटर उतनी ही तेजी से घूमेगी।

फिर [स्पिन] ब्लॉक का उपयोग मोटर को वास्तव में चलाने के लिए किया जाता है। यह दिशा निर्धारित हो जाने के बाद कार में गैस दबाने के बराबर है। इससे प्रत्येक मोटर को चार नियंत्रक अक्षों में से एक द्वारा नियंत्रित किया जा सकता है।

ऑप्शन 3 VEXcode IQ प्रोजेक्ट में ब्लॉक के चार ढेरों का क्लोज-अप दृश्य। पहले स्टैक में लिखा है कि जब कंट्रोलर बटन E ऊपर दबाया जाता है, तो आर्ममोटर को ऊपर की ओर घुमाएं। दूसरे स्टैक में लिखा है कि जब कंट्रोलर बटन E ऊपर छोड़ा जाए, तो आर्ममोटर को रोकें। तीसरे स्टैक में लिखा है कि जब कंट्रोलर बटन E डाउन दबाया जाता है, तो आर्ममोटर को नीचे की ओर घुमाएं। चौथे स्टैक में लिखा है कि जब कंट्रोलर बटन E डाउन छोड़ा जाए, तो आर्ममोटर को रोकें।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

{When controller axis} इवेंट ब्लॉक का उपयोग नियंत्रक पर दबाए जाने या छोड़े जाने वाले बटनों के लिए कुछ व्यवहारों को मैप करने के लिए किया जाता है। कोड के इस भाग में, निर्धारित शर्तें यह हैं कि क्या E अप या E डाउन बटन दबाया जाता है। यदि ऐसा है, तो कुछ निश्चित व्यवहार होंगे, जैसे कि हाथ को ऊपर उठाना, नीचे करना, या रुकना।

ध्यान दें कि क्लॉ के लिए परियोजना में कोड का अंतिम भाग भी इसी स्पष्टीकरण का अनुसरण करता है।

विकल्प 3 का सारांश: ईवेंट का उपयोग करना

लाभ

सीमाएँ

उदाहरण स्थिति

  • कस्टम बिल्ड को समायोजित कर सकता है, विशेष रूप से 4 से अधिक मोटरों वाले ड्राइवट्रेन को
  • एक ही बटन को अनेक व्यवहार निर्दिष्ट कर सकते हैं
  • नियंत्रक पर विभिन्न अक्षों को व्यवहार निर्दिष्ट कर सकते हैं (डिवाइस कॉन्फ़िगरेशन में केवल बाएं आर्केड, दाएं आर्केड, विभाजित आर्केड और टैंक ड्राइव के विकल्पों के विपरीत)
  • तीव्र कोड निष्पादन और इस प्रकार, बटन अनुक्रियाशीलता (क्योंकि प्रत्येक शर्त को अलग से बुलाया जाता है और कोड के एक एकल स्टैक में एम्बेड नहीं किया जाता है)
  • विकल्पों (कंडीशनल, लूप, इवेंट्स, तथा कंट्रोलर पर बटन/जॉयस्टिक्स का ज्ञान) के कोडिंग ज्ञान की सबसे अधिक आवश्यकता होती है।
  • यदि पहली पीढ़ी के VEX IQ ब्रेन का उपयोग किया जा रहा है, तो किसी प्रोजेक्ट में बहुत अधिक इवेंट होने पर, ब्रेन की प्रसंस्करण सीमाओं के कारण, प्रोजेक्ट नहीं चल सकता है।
  • कस्टम निर्मित रोबोट के साथ नियंत्रक का उपयोग करना, विशेष रूप से गैर-मानक ड्राइवट्रेन के साथ
  • जब आप बिना किसी देरी के एक ही बटन को कई व्यवहार सौंपना चाहते हैं। उदाहरण के लिए, जब एफ अप बटन दबाया जाता है, तो पंजा खुल सकता है, आगे बढ़ सकता है, और फिर किसी वस्तु के चारों ओर बंद हो सकता है।

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: