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

पाठ 2: [Wait until] ब्लॉक का उपयोग करना

इस पाठ में, आप बम्पर सेंसर और [Wait until] ब्लॉक का उपयोग करके एक प्रोजेक्ट बनाएंगे। इस मिनी-चैलेंज में, आपको इन कौशलों का उपयोग करके वॉल मेज़ के आरंभ से अक्षर 'A' तक पहुंचना होगा।

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

सीखने के परिणाम

  • यह पहचानें कि नॉन-वेटिंग ब्लॉक में स्टैक तब भी जारी रहता है, भले ही ब्लॉक का व्यवहार अभी पूरा न हुआ हो।
  • यह पहचानें कि प्रतीक्षा कर रहा ब्लॉक स्टैक को तब तक रोक देता है जब तक कि उस ब्लॉक का कार्य पूरा नहीं हो जाता।
  • यह पहचानें कि परियोजना के निष्पादन को उजागर करने से प्रतीक्षा कर रहे और प्रतीक्षा न कर रहे ब्लॉकों को दर्शाया जा सकता है।
  • यह पहचानें कि [Wait until] ब्लॉक एक कंट्रोल ब्लॉक है जो बूलियन मान स्वीकार करता है।
  • यह पहचानें कि [Wait until] ब्लॉक बार-बार एक बूलियन स्थिति की जांच करेगा और जब तक स्थिति TRUE रिपोर्ट नहीं करती तब तक अगले ब्लॉक पर नहीं जाएगा।
  • यह पहचानें कि [Wait until] ब्लॉक का उपयोग सेंसर की स्थिति की जांच करने के लिए गैर-प्रतीक्षा करने वाले ब्लॉक (जैसे ड्राइव) के साथ किया जाता है।
  • यह पहचानें कि [Wait until] ब्लॉक में <Pressing bumper> ब्लॉक TRUE या FALSE मान रिपोर्ट करता है।
  • यह पहचानें कि [ड्राइव फॉर] और [टर्न फॉर] ब्लॉक विशेष ब्लॉक हैं जो प्रतीक्षा कर सकते हैं या प्रतीक्षा नहीं कर सकते हैं।
  • एक ऐसा प्रोजेक्ट बनाने का तरीका बताएं जिसमें वीआर रोबोट तब तक आगे बढ़ता रहे जब तक बम्पर सेंसर को दबाया न जाए।

प्रोजेक्ट का नाम दें और उसे सेव करें

  • VEXcode VR में एक नया प्रोजेक्ट शुरू करें और प्रोजेक्ट का नाम Unit4Lesson2 रखें।
VEXcode VR टूलबार के केंद्र में स्थित प्रोजेक्ट नाम बॉक्स, जो लाल बॉक्स से हाइलाइट किया गया है, सेलेक्ट प्लेग्राउंड बटन के बाईं ओर है।

[तब तक प्रतीक्षा करें] ब्लॉक

[Wait until] ब्लॉक एक कंट्रोल ब्लॉक है जो बूलियन शर्तों को स्वीकार करता है। [Wait until] ब्लॉक बार-बार एक बूलियन स्थिति की जांच करते हैं और प्रोजेक्ट प्रवाह को नियंत्रित करते हैं। जब तक [Wait until] ब्लॉक में दी गई शर्त TRUE नहीं हो जाती, तब तक कोई प्रोजेक्ट स्टैक में अगले ब्लॉक पर नहीं जाएगा। [Wait until] ब्लॉक का उपयोग [Drive] या [Turn] जैसे गैर-प्रतीक्षा करने वाले ब्लॉक के साथ किया जाता है।

आपकी जानकारी के लिए

नॉन-वेटिंग और वेटिंग ब्लॉक यह निर्धारित करते हैं कि अगला ब्लॉक कब कोई व्यवहार शुरू करेगा। [ड्राइव फॉर] और [टर्न फॉर] जैसे प्रतीक्षा करने वाले ब्लॉक, स्टैक में अगले ब्लॉक पर जाने से पहले अपने व्यवहार को पूरा करते हैं। [ड्राइव] और [टर्न] जैसे नॉन-वेटिंग ब्लॉक, स्टैक में अगले ब्लॉक पर जाना जारी रखते हैं, भले ही नॉन-वेटिंग ब्लॉक का व्यवहार पूरा न हुआ हो।

कुछ ब्लॉक, जैसे [Drive for] और [Turn for], प्रतीक्षा करने वाले या प्रतीक्षा न करने वाले ब्लॉक हो सकते हैं। ब्लॉक पर मौजूद तीर का चयन करने से ब्लॉक प्रतीक्षा स्थिति से गैर-प्रतीक्षा स्थिति में बदल जाएगा।

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

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

स्विच नॉन-वेटिंग ब्लॉक ब्लॉक के अंत में "wait=False" पैरामीटर जोड़ता है। "wait=False" पायथन कमांड है जो ब्लॉक को प्रतीक्षा न करने और स्टैक में अगले ब्लॉक पर जाने के लिए कहता है।

समतुल्य स्विच ब्लॉक को कमांड के लिए ड्राइव के साथ दिखाया गया है, जिसमें एक वेटिंग और नॉन-वेटिंग कमांड शामिल है। सबसे ऊपर, स्विच ब्लॉक में पायथन कमांड ड्राइवट्रेन डॉट ड्राइव_फॉर (फॉरवर्ड, 200, एमएम) पढ़ता है। नीचे, उसी कमांड को ड्राइवट्रेन डॉट ड्राइव _ फॉर (फॉरवर्ड, 200, एमएम, वेट = फ़ॉल्स) पढ़ने के लिए विस्तारित किया गया है।

  • [ड्राइव] नॉन-वेटिंग ब्लॉक को वर्कस्पेस में ड्रैग करें।

    एक नया VEXcode VR प्रोजेक्ट जिसमें 'When started' ब्लॉक है और उससे एक ड्राइव ब्लॉक जुड़ा हुआ है जिसे फॉरवर्ड मोड पर सेट किया गया है।
  • [ड्राइव] ब्लॉक के नीचे एक [वेट अंटिल] ब्लॉक संलग्न करें।

    वही प्रोजेक्ट जिसमें स्टैक के सबसे नीचे एक वेट अंटिल ब्लॉक जोड़ा गया है। वेट अंटिल ब्लॉक का पैरामीटर खाली है।
  • [Wait until] ब्लॉक बूलियन शर्तों को स्वीकार करता है। यह प्रोजेक्ट बम्पर सेंसर का उपयोग करके वॉल मेज़ प्लेग्राउंड से होकर गुजरेगा। <Pressing bumper> बूलियन ब्लॉक को [Wait until] ब्लॉक में खींचें।

    वही प्रोजेक्ट जिसमें वेट अंटिल ब्लॉक के पैरामीटर में बम्पर प्रेस्ड ब्लॉक जोड़ा गया है। अब प्रोजेक्ट में लिखा है: शुरू करने पर, आगे बढ़ें, बाएँ बम्पर के दबने तक प्रतीक्षा करें।
  • [Stop driving] ब्लॉक को खींचकर प्रोजेक्ट में जोड़ें।

    वही प्रोजेक्ट जिसमें 'वेट अंटिल' ब्लॉक के नीचे 'स्टॉप ड्राइविंग' ब्लॉक जोड़ा गया है। अब प्रोजेक्ट में लिखा है: जब गाड़ी स्टार्ट हो जाए, तो आगे बढ़ें, जब तक बायां बम्पर न दब जाए तब तक प्रतीक्षा करें, फिर गाड़ी चलाना बंद कर दें।
  • यदि वॉल मेज़ प्लेग्राउंड पहले से खुला नहीं है, तो उसे लॉन्च करें और प्रोजेक्ट चलाएं।
  • वीआर रोबोट को वॉल मेज़ के शुरुआती बिंदु से चलते हुए देखें और जब बम्पर सेंसर दीवार से दब जाए तो उसे रुकते हुए देखें।
  • [ड्राइव] ब्लॉक वीआर रोबोट को <Pressing bumper> ब्लॉक के साथ बम्पर सेंसर की स्थिति की जांच करते हुए आगे बढ़ते रहने की अनुमति देता है। एक बार जब <Pressing bumper> TRUE के रूप में रिपोर्ट करता है, तो VR रोबोट स्टैक में अगले ब्लॉक पर चला जाएगा और चलना बंद कर देगा।

    इस पाठ से VEXcode VR प्रोजेक्ट को प्रोजेक्ट प्रवाह दिखाने के लिए अलग-अलग भागों में विभाजित किया गया है। 'When started' ब्लॉक के बाद 'drive forward' ब्लॉक आता है। ड्राइव फॉरवर्ड ब्लॉक से एक सुनहरा तीर नीचे की ओर "बाएं बम्पर दबाए जाने तक प्रतीक्षा करें" ब्लॉक की ओर इशारा करता है। ब्लॉक के दाईं ओर 2 घुमावदार लाल तीर हैं जो एक वृत्ताकार गति को दर्शाते हैं और "दबाया नहीं गया (गलत)" शब्द यह दिखाते हैं कि जब रोबोट आगे बढ़ता है और बम्पर स्विच नहीं दबाया जाता है तो क्या होता है। "Wait until" ब्लॉक के नीचे, "pressed (true)" शब्दों के साथ "stop driving" ब्लॉक की ओर नीचे की ओर इशारा करता हुआ एक हरा तीर इंगित करता है कि बम्पर स्विच दबाए जाने पर प्रोजेक्ट "stop driving" ब्लॉक पर चला जाएगा।

    आपकी जानकारी के लिए

    प्रतीक्षा कर रहे और प्रतीक्षा न कर रहे ब्लॉकों के बीच अंतर को समझने के लिए, VEXcode VR में कोड निष्पादन हाइलाइटिंग फ़ंक्शन देखें। इस प्रोजेक्ट की शुरुआत में, शर्त पूरी होने तक [Wait until] ब्लॉक के चारों ओर हरी हाइलाइट दिखाई देगी। ऐसा इसलिए है क्योंकि [Wait until] ब्लॉक एक प्रतीक्षा ब्लॉक है। हरे रंग से हाइलाइट किए गए हिस्से उन ब्लॉकों को छोड़ देंगे जिनमें प्रतीक्षा नहीं हो रही है क्योंकि ये कमांड तेजी से निष्पादित होते हैं।

    इस पाठ से VEXcode VR प्रोजेक्ट में Wait until ब्लॉक के चारों ओर एक लाल कॉलआउट बॉक्स है, जो दर्शाता है कि यह एक प्रतीक्षा ब्लॉक है।

     

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

    यह स्विच ब्लॉक है जिसमें [Wait until] कमांड है और <Bumper pressed> है।  बूलियन रिपोर्टर।

    ऊपर दिए गए VEXcode VR प्रोजेक्ट की तरह ही, लेकिन इसमें Wait until ब्लॉक को Switch ब्लॉक से बदल दिया गया है। स्विच ब्लॉक में पाइथन कमांड पहली पंक्ति पर while not left_bumper.pressed(): पढ़ता है। फिर पायथन ब्लॉक के ठीक नीचे इंडेंट किया गया है wait (5, msec).

    while not left_bumper.pressed():यह पायथन कमांड है जो जांच करता है कि क्या बायां बम्पर वर्तमान में दबाया जा रहा है।

    wait (5, MSEC)एक पायथन कमांड है जो 5 मिलीसेकंड (MSEC) के लिए चेक के निष्पादन को रोक देता है, इसलिए प्रोजेक्ट हर 5 MSEC में जांच करता है कि बायां बम्पर दबाया गया है या नहीं। कोड की यह पंक्ति पहली पंक्ति के नीचे इंडेंट की गई है क्योंकि यह कमांड वह व्यवहार है जो शर्त (इस मामले में, बायां बम्पर दबाया जाना) पूरी होने तक दोहराया जाएगा।

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

    बाएं बम्पर को दबाते ही रोबोट चलना बंद कर देगा।

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