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

पाठ 2: तुलना ब्लॉकों का उपयोग करना और निकट तक गाड़ी चलाना

इस पाठ में, आप एक ऐसा प्रोजेक्ट बनाएंगे जो <Less than> बूलियन रिपोर्टर ब्लॉक के साथ डिस्टेंस सेंसर का उपयोग करके वीआर रोबोट को अक्षर 'ए' तक ले जाएगा। इस मिनी-चैलेंज में, आपको इन कौशलों का उपयोग करके वॉल मेज़ के आरंभ से संख्या '1' तक पहुंचना होगा।

दीवार पर बने भूलभुलैया का ऊपर से लिया गया दृश्य, जिसमें वीआर रोबोट की शुरुआती स्थिति के पास लाल बॉक्स में अक्षर 'ए' लक्ष्य को हाइलाइट किया गया है।

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

  • यह पहचानें कि <Greater than> ब्लॉक एक बूलियन ब्लॉक है जो यह बताता है कि पहला मान दूसरे मान से बड़ा है या नहीं।
  • यह पहचानें कि <Less than> ब्लॉक एक बूलियन ब्लॉक है जो यह बताता है कि पहला मान दूसरे मान से कम है या नहीं।
  • यह पहचानें कि [Wait until] ब्लॉक में <Greater than> या <Less than> ब्लॉक TRUE या FALSE मान रिपोर्ट करते हैं।
  • एक ऐसा प्रोजेक्ट बनाने का तरीका बताएं जिसमें एक वीआर रोबोट तब तक आगे बढ़ता रहे जब तक कि डिस्टेंस सेंसर का मान 50 मिलीमीटर (मिमी) की सीमा से कम न हो जाए।

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

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

दीवारों से बचने के लिए दूरी सेंसर का उपयोग करें

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

इस प्रोजेक्ट में डिस्टेंस सेंसर का उपयोग करके वॉल मेज़ प्लेग्राउंड में दीवारों से टकराए बिना नेविगेट किया जाएगा। इस प्रोजेक्ट में आप <Less than> बूलियन ब्लॉक के अंदर (दूरी से) ब्लॉक का उपयोग करेंगे।

<Less than>, <Greater than>और <Equal to> तुलना ब्लॉक हैं - वे मूल्यों की तुलना करते हैं। ये बूलियन रिपोर्टर ब्लॉक भी हैं जो तुलना की शर्त पूरी होने पर TRUE मान और शर्त पूरी होने पर नहीं) FALSE मान रिपोर्ट करते हैं।

  • <Less than> तब TRUE रिपोर्ट करता है जब पहला मान दूसरे मान से छोटा होता है और FALSE रिपोर्ट करता है जब पहला मान दूसरे मान से बड़ा या बराबर होता है।
    VEXcode VR लेस दैन बूलियन ब्लॉक, '25 लेस दैन 50' पढ़ रहा है।
  • <Greater than> तब TRUE रिपोर्ट करता है जब पहला मान दूसरे मान से बड़ा होता है, और FALSE रिपोर्ट करता है जब पहला मान दूसरे मान से छोटा या बराबर होता है।
    VEXcode VR ग्रेटर दैन बूलियन ब्लॉक, '100 ग्रेटर दैन 50' पढ़ रहा है।
  • जब दोनों मान बिल्कुल समान होते हैं तो <Equal to> TRUE रिपोर्ट करता है, और जब वे समान नहीं होते तो FALSE रिपोर्ट करता है।
    VEXcode VR इक्वल टू बूलियन ब्लॉक, '50 बराबर 50' पढ़ रहा है।

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

इस उदाहरण में, जब किसी वस्तु और वीआर रोबोट पर स्थित दूरी सेंसर के बीच की दूरी 50 मिलीमीटर (मिमी) से कम होगी, तो ब्लॉक TRUE रिपोर्ट करेगा।

VEXcode VR Less Than बूलियन ब्लॉक जिसके अंदर Distance From ब्लॉक है, जो 'Front Distance in millimillions less than 50' पढ़ता है।

  • <Less than> बूलियन ब्लॉक को [Wait until] ब्लॉक में खींचें।
  • राउंड (दूरी से) ब्लॉक को बूलियन रिपोर्टर ब्लॉक के अंदर रखें
    VEXcode VR Blocks प्रोजेक्ट पिछले चरणों को एक साथ जोड़ता है। अब पूरे प्रोजेक्ट में लिखा है: शुरू करते ही, आगे बढ़ें और तब तक प्रतीक्षा करें जब तक कि सामने की दूरी मिलीमीटर में 50 से कम न हो जाए। एक लाल बॉक्स 'लेस दैन' बूलियन ब्लॉक को हाइलाइट करता है।
  • [Wait until] ब्लॉक वीआर रोबोट को तब तक आगे बढ़ाता रहेगा जब तक कि शर्त पूरी नहीं हो जाती और रिपोर्ट की गई दूरी 50 मिलीमीटर (मिमी) से कम नहीं हो जाती। फिर, प्रोजेक्ट स्टैक में अगले ब्लॉक पर चला जाएगा, जो कि [ड्राइविंग बंद करें] ब्लॉक होगा।
    VEXcode VR ब्लॉक्स प्रोजेक्ट में लॉजिक के प्रवाह को दर्शाने वाला एक आरेख। यह प्रोजेक्ट आगे की ओर ड्राइव करके शुरू होता है, और उस कमांड को तब तक बनाए रखता है जब तक कि फ्रंट डिस्टेंस सेंसर की दूरी मिलीमीटर में 50 से कम न हो जाए, जिसके बाद स्टॉप ड्राइविंग ब्लॉक ड्राइव फॉरवर्ड कमांड को समाप्त कर देता है।
  • [Wait until] ब्लॉक के बाद एक [Stop driving] ब्लॉक की आवश्यकता होती है क्योंकि VR रोबोट तब तक चलता रहेगा जब तक उसे रुकने का निर्देश नहीं दिया जाता। प्रोजेक्ट में [Stop driving] ब्लॉक जोड़ें।
    पहले वाले VEXcode VR ब्लॉक प्रोजेक्ट में Wait Until ब्लॉक के बाद Stop Driving ब्लॉक जोड़ा गया है। अब पूरी परियोजना इस प्रकार है: जब गाड़ी चलाना शुरू करें, तो आगे बढ़ें और तब तक प्रतीक्षा करें जब तक कि सामने की दूरी मिलीमीटर में 50 से कम न हो जाए, जिसके बाद गाड़ी चलाना बंद कर दें।
  • यदि वॉल मेज़ प्लेग्राउंड पहले से खुला नहीं है, तो उसे लॉन्च करें और प्रोजेक्ट चलाएं।
  • वीआर रोबोट को वॉल मेज़ के आरंभ से चलते हुए देखें और तब रुकें जब डिस्टेंस सेंसर यह रिपोर्ट करे कि यह दीवार से 50 मिलीमीटर (मिमी) से कम दूरी पर है।
    दीवार पर बने भूलभुलैया का ऊपर से लिया गया दृश्य, जिसमें वीआर रोबोट की शुरुआती स्थिति के पास अक्षर 'ए' का लक्ष्य मौजूद है। ब्लॉक्स प्रोजेक्ट के परिणामस्वरूप वीआर रोबोट ने अब प्रगति की है।
  • [Wait until] ब्लॉक के अंदर (Distance from) ब्लॉक के साथ <Less than> ब्लॉक का उपयोग करके, VR रोबोट को निर्देश दिया जाता है कि वह रुकने से पहले दीवार से 50 मिलीमीटर (mm) से कम दूरी पर हो।
  • वीआर रोबोट को शुरुआती स्थिति में वापस लाने के लिए प्लेग्राउंड को रीसेट करें।

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

इस पाठ में, आपने <Greater than>, <Less than>और <Equal to> बूलियन ब्लॉक के बारे में सीखा। नीचे दी गई छवि स्विच बूलियन तुलना ब्लॉक को दर्शाती है। स्विच बूलियन ब्लॉक के इच्छित रूप से कार्य करने के लिए, स्विच पायथन फ़ंक्शन को सही वर्तनी और विराम चिह्नों के साथ दर्ज किया जाना चाहिए। 

ध्यान दें कि स्विच <Equal to> ब्लॉक दो बराबर चिह्नों (==) उपयोग करता है। ऐसा इसलिए है क्योंकि पायथन में, एक बराबर चिह्न (=) किसी मान के असाइनमेंट को दर्शाता है (उदाहरण के लिए, x = 10), जबकि दो बराबर चिह्न (==) यह जांचते हैं कि दो मान बराबर हैं या नहीं। स्विच <Equal to> ब्लॉक का उपयोग करते समय दो बराबर चिह्नों का उपयोग करना सुनिश्चित करें। 
तीन VEXcode VR बूलियन ब्लॉक और उनके संबंधित स्विच ब्लॉक की तुलना। लेस दैन ब्लॉक को पायथन में '25 < 50' के रूप में लिखा जाता है, ग्रेटर दैन ब्लॉक को पायथन में '100 > 50' के रूप में लिखा जाता है, और इक्वल टू ब्लॉक को पायथन में '50 == 50' के रूप में लिखा जाता है। अंतिम उदाहरण में दो बराबर चिह्नों को एक लाल बॉक्स में हाइलाइट किया गया है, जो दर्शाता है कि पायथन में दो मानों की तुलना बराबर कैसे की जाती है।

आपने एक उदाहरण परियोजना भी देखी जिसमें वीआर रोबोट तब तक आगे बढ़ेगा जब तक कि बताई गई दूरी किसी वस्तु से 50 मिलीमीटर (मिमी) से कम न हो जाए। फिर, वीआर रोबोट रुक जाएगा। दाईं ओर का प्रोजेक्ट स्विच ब्लॉक के अंदर संबंधित पायथन कमांड दिखाता है। कमांड,while not front_distance.get_distance(MM) < 50रोबोट को यह जांचने के लिए कहता है कि क्या रिपोर्ट की गई दूरी किसी वस्तु से 50 MM से कम है।

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

हमारे VEXcode VR प्रोजेक्ट की तुलना, जिसमें दाईं ओर Wait Until ब्लॉक को स्विच ब्लॉक में परिवर्तित किया गया है। नया स्विच ब्लॉक पायथन में 'while not front_distance.get_distance(MM) < 50: wait(5, msec)' पढ़ता है।

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