मुख्य सामग्री पर जाएं

पाठ 2: पहले हरे और फिर नीले डिस्क तक ड्राइव करें

पहले हरे और फिर नीले डिस्क की ओर ड्राइव करें

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

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

    पहले वाला VEXcode VR ब्लॉक्स प्रोजेक्ट, जिसमें कमेंट और ड्राइव फॉरवर्ड ब्लॉक्स जोड़े गए हैं। अब पूरे प्रोजेक्ट में 'When Started' लिखा हुआ है, जिसके बाद 'drive to first disk (green), then turn right' लिखा हुआ है। इसके बाद, आगे बढ़ें, सामने वाली बत्ती के हरे रंग का संकेत मिलने तक प्रतीक्षा करें, फिर 90 डिग्री दाएं मुड़ें। इसके बाद एक कमेंट ब्लॉक है जिसमें लिखा है 'अगली डिस्क (नीली) पर जाएं, फिर बाईं ओर मुड़ें'। अंत में, आगे बढ़ते रहिए।
  • एक और [Wait until] जोड़ें जिसमें <Color sensing> ब्लॉक को 'नीला' का पता लगाने के लिए सेट किया गया हो, क्योंकि वीआर रोबोट को मिलने वाली अगली डिस्क नीली होगी।

    पहले के VEXcode VR ब्लॉक प्रोजेक्ट में, आखिरी ड्राइव फॉरवर्ड ब्लॉक के बाद एक वेट अंटिल ब्लॉक जोड़ा गया है। अब पूरे प्रोजेक्ट में 'When Started' लिखा हुआ है, जिसके बाद 'drive to first disk (green), then turn right' लिखा हुआ है। इसके बाद, आगे बढ़ें, सामने वाली बत्ती के हरे रंग का संकेत मिलने तक प्रतीक्षा करें, फिर 90 डिग्री दाएं मुड़ें। इसके बाद एक कमेंट ब्लॉक है जिसमें लिखा है 'अगली डिस्क (नीली) पर जाएं, फिर बाईं ओर मुड़ें'। अंत में, आगे बढ़ते रहें और तब तक प्रतीक्षा करें जब तक कि फ्रंट आई को नीला रंग दिखाई न दे।
  • [Turn for] ब्लॉक जोड़ें और पैरामीटर को 'left' पर सेट करें।

    पहले के VEXcode VR ब्लॉक प्रोजेक्ट में, आखिरी Wait Until ब्लॉक के बाद Turn Left For 90 Degrees ब्लॉक जोड़ा गया है। अब पूरे प्रोजेक्ट में 'When Started' लिखा हुआ है, जिसके बाद 'drive to first disk (green), then turn right' लिखा हुआ है। इसके बाद, आगे बढ़ें, सामने वाली बत्ती के हरे रंग का संकेत मिलने तक प्रतीक्षा करें, फिर 90 डिग्री दाएं मुड़ें। इसके बाद एक कमेंट ब्लॉक है जिसमें लिखा है 'अगली डिस्क (नीली) पर जाएं, फिर बाईं ओर मुड़ें'। आगे बढ़ते रहें और सामने वाली लाइट द्वारा नीले रंग का पता चलने तक प्रतीक्षा करें, फिर 90 डिग्री बाईं ओर मुड़ें।
  • यह देखने के लिए प्रोजेक्ट चलाएं कि वीआर रोबोट डिस्क मेज़ प्लेग्राउंड में कैसे चलता है।

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

    हमारे प्रोजेक्ट के अंत में जोड़ने के लिए VEXcode VR ब्लॉक स्निपेट, जिसका उपयोग हम नीले रंग के तीसरे और चौथे डिस्क तक पहुंचने के लिए करेंगे। तीसरी डिस्क तक जाने के लिए, आगे ड्राइव करें, फ्रंट आई द्वारा नीले रंग का पता चलने तक प्रतीक्षा करें, और 90 डिग्री बाईं ओर मुड़ें। चौथी डिस्क तक जाने के लिए, आगे बढ़ें, सामने वाली आंख द्वारा नीले रंग का पता चलने तक प्रतीक्षा करें और फिर 90 डिग्री बाईं ओर मुड़ें। अंत में, गाड़ी चलाना बंद कर दें।
    तीसरे और चौथे डिस्क तक पहुंचने के लिए VEXcode ब्लॉक स्निपेट को अब हमारे प्रोजेक्ट के निचले भाग में जोड़ दिया गया है। अब इस पूरी परियोजना में चार डिस्क शामिल हैं, पहले एक हरी डिस्क और फिर तीन नीली डिस्क। प्रत्येक डिस्क के लिए कोड के निम्नलिखित भाग का उपयोग करें: ड्राइव को आगे बढ़ाएं, फ्रंट आई द्वारा डिस्क के रंग का पता लगाने तक प्रतीक्षा करें, फिर यदि डिस्क हरी है तो 90 डिग्री दाएं मुड़ें और यदि नीली है तो 90 डिग्री बाएं मुड़ें। उस तीन-ब्लॉक वाले खंड को चार बार दोहराने पर हम चार डिस्क तक पहुँच सकते हैं, पहले दाईं ओर मुड़कर एक हरी डिस्क और फिर बाईं ओर मुड़कर तीन नीली डिस्क। इन 12 ब्लॉकों और प्रत्येक अनुभाग को चिह्नित करने वाली अतिरिक्त टिप्पणियों के बाद, गाड़ी चलाना बंद कर दें।
  • ध्यान दें कि इसमें एक पैटर्न है। इस प्रोजेक्ट में ब्लॉकों की एक श्रृंखला है जिसे तीन बार दोहराया गया है। इस कोड के भाग को [Repeat] ब्लॉक का उपयोग करके संक्षिप्त किया जा सकता है।

    अब हम अपने कोड को सरल और छोटा करने के लिए रिपीट ब्लॉक का उपयोग करेंगे। एक लाल बॉक्स नीले डिस्क तक पहुंचने के लिए उपयोग किए जाने वाले तीन खंडों को हाइलाइट करता है, क्योंकि यह एक ही कोड तीन बार है, इसलिए हम इसे एक रिपीट ब्लॉक में जोड़ सकते हैं जिसे 3 बार दोहराने के लिए सेट किया गया है। अब, प्रोजेक्ट में लिखा है कि जब गाड़ी स्टार्ट हो, तो आगे बढ़ें और सामने वाली लाइट के हरी बत्ती का पता चलने तक प्रतीक्षा करें, उसके बाद ही 90 डिग्री दाएं मुड़ें। इसके बाद, नीली डिस्क तक पहुंचने के लिए कोड को तीन बार दोहराएं: आगे बढ़ें, सामने वाली आंख द्वारा नीले रंग का पता चलने तक प्रतीक्षा करें और फिर 90 डिग्री बाईं ओर मुड़ें। रिपीट लूप बंद करने के बाद, गाड़ी चलाना बंद कर दें।
  • यदि डिस्क मेज़ प्लेग्राउंड पहले से खुला नहीं है, तो उसे खोलें और प्रोजेक्ट चलाएं।
  • वीआर रोबोट को डिस्क मेज़ प्लेग्राउंड पर चार डिस्क तक नेविगेट करते हुए देखें।

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

स्विच ब्लॉक का उपयोग करना

अब तक, आपने हरे डिस्क और फिर तीन नीले डिस्क पर ड्राइव करने के लिए एक प्रोजेक्ट बनाया है।

नीचे दी गई छवि में VEXcode ब्लॉकों का उपयोग करके संपूर्ण प्रोजेक्ट दिखाया गया है, जिसमें तीन नीले डिस्क को चलाने के लिए उपयोग किए जाने वाले दोहराए जाने वाले व्यवहारों को लाल रंग के बॉक्स में दिखाया गया है।

यह VEXcode VR ब्लॉक्स प्रोजेक्ट है जिस पर हम काम कर रहे हैं, जिसमें 'तीन बार दोहराएं' ब्लॉक को लाल रंग से हाइलाइट किया गया है। प्रोजेक्ट में लिखा है कि जब गाड़ी स्टार्ट हो जाए, तो आगे बढ़ें और सामने वाली लाइट के हरी बत्ती का पता चलने तक प्रतीक्षा करें, उसके बाद 90 डिग्री दाएं मुड़ें। इसके बाद, रिपीट ब्लॉक का उपयोग करके नीली डिस्क तक पहुंचने के लिए कोड को तीन बार दोहराएं: आगे बढ़ें, सामने वाली आंख द्वारा नीले रंग का पता चलने तक प्रतीक्षा करें और फिर 90 डिग्री बाएं मुड़ें। रिपीट लूप बंद करने के बाद, गाड़ी चलाना बंद कर दें।

नीचे दिए गए प्रोजेक्ट में इन्हीं VEXcode ब्लॉकों को कई स्विच ब्लॉकों में परिवर्तित करके दिखाया गया है।

केंद्र परियोजना

यह आखिरी प्रोजेक्ट एक ही स्विच ब्लॉक के भीतर समान स्विच ब्लॉक कमांड को पायथन कमांड में परिवर्तित करके दिखाता है।

VEXcode VR ब्लॉक प्रोजेक्ट पहले चार डिस्क तक पहुंचने के लिए बनाया गया है, लेकिन इसमें संपूर्ण रिपीट लूप को पायथन स्विच ब्लॉक में परिवर्तित किया गया है। पूरी परियोजना में लिखा है कि जब गाड़ी स्टार्ट हो जाए, तो आगे बढ़ें और सामने वाली लाइट के हरे रंग का संकेत मिलने तक प्रतीक्षा करें, फिर 90 डिग्री दाएं मुड़ें। इसके बाद, स्विच ब्लॉक में निम्नलिखित पायथन कोड शामिल है: 'for repeat_count in range(3): drivetrain.drive(FORWARD) while not front_eye.detect(BLUE): wait(5, MSEC) drivetrain.turn_for(LEFT, 90, DEGREES)'. अब, स्विच ब्लॉक के बाहर, अंत में गाड़ी चलाना बंद कर दें।

repeat_count in range(3): के लिए वह पायथन कमांड है जो रोबोट को बताता है कि कोड की अगली इंडेंटेड पंक्तियों को तीन बार दोहराया जाना चाहिए। ध्यान दें कि आपको फॉर लूप के बाद एक कोलन (:) शामिल करना चाहिए। 

इसके बाद की कोड की पंक्तियाँ उन व्यवहारों को दर्शाती हैं जिन्हें दोहराया जाएगा। ध्यान दें कि ये व्यवहार डिफ़ॉल्ट रूप से 4 रिक्त स्थानों पर इंडेंटेड हैं 

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

लाइन, wait (5, MSEC)को while not front_eye.detect(BLUE) कमांड के नीचे इंडेंट किया गया है क्योंकि फ्रंट आई सेंसर नीले रंग की जांच करेगा, प्रत्येक जांच के बीच 5 MSEC का विराम लेगा।

इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन चुनें।