Skip to main content

പാഠം 2: [വരെ കാത്തിരിക്കുക] ബ്ലോക്ക് ഉപയോഗിക്കുന്നു

ഈ പാഠത്തിൽ, നിങ്ങൾ ബമ്പർ സെൻസറും [വരെ കാത്തിരിക്കുക] ബ്ലോക്കും ഉപയോഗിച്ച് ഒരു പ്രോജക്റ്റ് സൃഷ്ടിക്കും. മിനി-ചലഞ്ചിൽ, വാൾ മേസിന്റെ തുടക്കം മുതൽ 'A' എന്ന അക്ഷരം വരെ നാവിഗേറ്റ് ചെയ്യാൻ നിങ്ങൾ ഈ കഴിവുകൾ പ്രയോഗിക്കും.

ഒരു ഭിത്തിക്ക് നേരെ മുന്നിൽ VR റോബോട്ടുള്ള വാൾ മെയ്സ് പ്ലേഗ്രൗണ്ടിന്റെ സൈഡ് വ്യൂ, ചുവരുകൾ ത്രിമാനമാണെന്നും റോബോട്ടിന് അവയുമായി കൂട്ടിയിടിക്കാൻ കഴിയുമെന്നും കാണിക്കുന്നു.

പഠന ഫലങ്ങൾ

  • ബ്ലോക്കിന്റെ സ്വഭാവം ഇതുവരെ പൂർത്തിയായിട്ടില്ലെങ്കിൽ പോലും, നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകളിൽ സ്റ്റാക്ക് തുടരുന്നുണ്ടെന്ന് തിരിച്ചറിയുക.
  • ഒരു വെയിറ്റിംഗ് ബ്ലോക്ക്, ആ ബ്ലോക്കിന്റെ സ്വഭാവം പൂർത്തിയാകുന്നതുവരെ സ്റ്റാക്കിനെ താൽക്കാലികമായി നിർത്തുന്നുവെന്ന് തിരിച്ചറിയുക.
  • പ്രോജക്റ്റിന്റെ നിർവ്വഹണത്തിന്റെ ഹൈലൈറ്റിംഗ് കാത്തിരിപ്പ് vs നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകളെ ദൃശ്യവൽക്കരിക്കുന്നുവെന്ന് തിരിച്ചറിയുക.
  • [Wait until] ബ്ലോക്ക് ബൂളിയൻ മൂല്യങ്ങൾ സ്വീകരിക്കുന്ന ഒരു കൺട്രോൾ ബ്ലോക്കാണെന്ന് തിരിച്ചറിയുക.
  • [Wait until] ബ്ലോക്ക് ഒരു ബൂളിയൻ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിക്കുമെന്നും ആ അവസ്ഥ TRUE എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നതുവരെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങില്ലെന്നും തിരിച്ചറിയുക.
  • സെൻസർ അവസ്ഥ പരിശോധിക്കുന്നതിനായി [Wait until] ബ്ലോക്ക് ഒരു നോൺ-വെയിറ്റിംഗ് ബ്ലോക്കിനൊപ്പം (ഉദാ. ഡ്രൈവ്) ഉപയോഗിക്കുന്നുവെന്ന് തിരിച്ചറിയുക.
  • [Wait until] ബ്ലോക്കിൽ <Pressing bumper> ബ്ലോക്ക് ഒരു TRUE അല്ലെങ്കിൽ FALSE മൂല്യം റിപ്പോർട്ട് ചെയ്യുന്നുവെന്ന് തിരിച്ചറിയുക.
  • [Drive for] ഉം [Turn for] ബ്ലോക്കുകളും വെയ്റ്റിംഗ് അല്ലെങ്കിൽ നോൺ-വെയ്റ്റിംഗ് ആകാവുന്ന പ്രത്യേക ബ്ലോക്കുകളാണെന്ന് തിരിച്ചറിയുക.
  • ബമ്പർ സെൻസർ അമർത്തുന്നത് വരെ ഒരു VR റോബോട്ട് ഡ്രൈവ് മുന്നോട്ട് പോകുന്ന ഒരു പ്രോജക്റ്റ് എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് വിവരിക്കുക.

പ്രോജക്റ്റിന് പേര് നൽകി സംരക്ഷിക്കുക

  • VEXcode VR-ൽ ഒരു പുതിയ പ്രോജക്റ്റ് ആരംഭിച്ച് പ്രോജക്റ്റിന് എന്ന് പേരിടുക Unit4Lesson2.
VEXcode VR ടൂൾബാറിന്റെ മധ്യഭാഗത്തുള്ള പ്രോജക്റ്റ് നെയിം ബോക്സ്, 'പ്ലേഗ്രൗണ്ട് തിരഞ്ഞെടുക്കുക' ബട്ടണിന്റെ ഇടതുവശത്ത് ചുവന്ന ബോക്സ് ഉപയോഗിച്ച് ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു.

[കാത്തിരിക്കുക] ബ്ലോക്കുകൾ

[Wait until] ബ്ലോക്ക് ബൂളിയൻ വ്യവസ്ഥകൾ അംഗീകരിക്കുന്ന ഒരു കൺട്രോൾ ബ്ലോക്കാണ്. [കാത്തിരിക്കുക] ബ്ലോക്കുകൾ ഒരു ബൂളിയൻ അവസ്ഥ ആവർത്തിച്ച് പരിശോധിച്ച് പ്രോജക്റ്റ് ഫ്ലോ നിയന്ത്രിക്കുന്നു. [Wait until] ബ്ലോക്കിലെ അവസ്ഥ TRUE ആയി റിപ്പോർട്ട് ചെയ്യപ്പെടുന്നതുവരെ ഒരു പ്രോജക്റ്റ് സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങില്ല. [Wait until] ബ്ലോക്കുകൾ [ഡ്രൈവ്] അല്ലെങ്കിൽ [ടേൺ] പോലുള്ള നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകൾക്കൊപ്പം ഉപയോഗിക്കുന്നു.

നിങ്ങളുടെ അറിവിലേക്കായി

അടുത്ത ബ്ലോക്ക് ഒരു പെരുമാറ്റം ആരംഭിക്കുന്നത് എപ്പോഴാണെന്ന് നോൺ-വെയ്റ്റിംഗ്, വെയ്റ്റിംഗ് ബ്ലോക്കുകൾ നിർണ്ണയിക്കുന്നു. [Drive for], [Turn for] പോലുള്ള വെയിറ്റിംഗ് ബ്ലോക്കുകൾ, സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങുന്നതിനുമുമ്പ് അവയുടെ പെരുമാറ്റങ്ങൾ പൂർത്തിയാക്കുന്നു. [ഡ്രൈവ്], [ടേൺ] പോലുള്ള നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകൾ, നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കിന്റെ സ്വഭാവം പൂർത്തിയായില്ലെങ്കിൽ പോലും സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങുന്നത് തുടരുന്നു.

[Drive for], [Turn for] പോലുള്ള ചില ബ്ലോക്കുകൾ വെയ്റ്റിംഗ് ബ്ലോക്കുകളോ നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകളോ ആകാം. ബ്ലോക്കിലെ അമ്പടയാളം തിരഞ്ഞെടുക്കുന്നത് ബ്ലോക്ക് വെയിറ്റിംഗിൽ നിന്ന് നോൺ-വെയിറ്റിംഗ് ബ്ലോക്കായി മാറ്റും.

ബ്ലോക്കിന്റെ വലതുവശത്തുള്ള അമ്പടയാളം അടച്ചും തുറന്നും കാണിച്ചിരിക്കുന്നതുപോലെ, ബ്ലോക്കിനായുള്ള ഒരു ഡ്രൈവ് കാണിച്ചിരിക്കുന്നു. മുകളിൽ, ബ്ലോക്കിനുള്ള ഡ്രൈവ് "ഡ്രൈവ് ഫോർവേഡ് ഫോർ 200mm" എന്ന് കാണിക്കുന്നു. താഴെ, അതേ ബ്ലോക്ക് നീട്ടിയിരിക്കുന്നു, അങ്ങനെ 200mm 'ഡ്രൈവ് ഫോർവേഡ്' എന്ന് വായിക്കാം, കാത്തിരിക്കേണ്ടതില്ല.

സ്വിച്ച് ബ്ലോക്കുകൾ ഉപയോഗിക്കുന്നു

സ്വിച്ച് നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്ക് ബ്ലോക്കിന്റെ അവസാനം "wait=False" പാരാമീറ്റർ ചേർക്കുന്നു. "wait=False" എന്നത് പൈത്തൺ കമാൻഡാണ്, അത് ബ്ലോക്കിനോട് കാത്തിരിക്കേണ്ടതില്ലെന്നും സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കുകളിലേക്ക് നീങ്ങുന്നത് തുടരാനും പറയുന്നു.

കമാൻഡിനായുള്ള ഡ്രൈവിനൊപ്പം തുല്യമായ സ്വിച്ച് ബ്ലോക്ക് വെയ്റ്റിംഗ്, നോൺ-വെയ്റ്റിംഗ് കമാൻഡായി കാണിച്ചിരിക്കുന്നു. മുകളിൽ, സ്വിച്ച് ബ്ലോക്കിലെ പൈത്തൺ കമാൻഡ് ഡ്രൈവ്‌ട്രെയിൻ ഡോട്ട് drive_for (FORWARD, 200, MM) എന്ന് വായിക്കുന്നു. താഴെ, ഡ്രൈവ്‌ട്രെയിൻ ഡോട്ട് ഡ്രൈവ് _ ഫോർ (FORWARD, 200, MM, wait = false) വായിക്കാൻ അതേ കമാൻഡ് നീട്ടിയിരിക്കുന്നു.

  • [ഡ്രൈവ്] നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്ക് വർക്ക്‌സ്‌പെയ്‌സിലേക്ക് വലിച്ചിടുക.

    ഒരു ഡ്രൈവ് ബ്ലോക്ക് ഘടിപ്പിച്ച് ഫോർവേഡ് ചെയ്യാൻ സജ്ജീകരിച്ചിരിക്കുന്ന 'When started' എന്ന ബ്ലോക്കുള്ള ഒരു പുതിയ VEXcode VR പ്രോജക്റ്റ്.
  • [ഡ്രൈവ്] ബ്ലോക്കിന് താഴെ ഒരു [വരെ കാത്തിരിക്കുക] ബ്ലോക്ക് അറ്റാച്ചുചെയ്യുക.

    സ്റ്റാക്കിന്റെ അടിയിൽ ബ്ലോക്ക് ചേർക്കുന്നതുവരെ കാത്തിരിക്കേണ്ട അതേ പ്രോജക്റ്റ്. ബ്ലോക്ക് ശൂന്യമാകുന്നതുവരെ കാത്തിരിക്കുക എന്നതിന്റെ പാരാമീറ്റർ.
  • [Wait until] ബ്ലോക്ക് ബൂളിയൻ വ്യവസ്ഥകൾ അംഗീകരിക്കുന്നു. ഈ പ്രോജക്റ്റ് വാൾ മെയ്സ് പ്ലേഗ്രൗണ്ട്ലൂടെ ഓടിക്കാൻ ബമ്പർ സെൻസർ ഉപയോഗിക്കും. <Pressing bumper> ബൂളിയൻ ബ്ലോക്ക് [Wait until] ബ്ലോക്കിലേക്ക് വലിച്ചിടുക.

    ബമ്പർ അമർത്തിയ ബ്ലോക്ക് ഉള്ള അതേ പ്രോജക്റ്റ്, ബ്ലോക്ക് വരെ കാത്തിരിക്കുക എന്ന പാരാമീറ്ററിലേക്ക് ചേർത്തു. പ്രോജക്റ്റ് ഇപ്പോൾ 'When started, drive forward, wait until left bumper pressed' എന്നാണ് വായിക്കുന്നത്.
  • ഒരു [സ്റ്റോപ്പ് ഡ്രൈവിംഗ്] ബ്ലോക്ക് ഡ്രാഗ് ചെയ്ത് പ്രോജക്റ്റിലേക്ക് ചേർക്കുക.

    വെയ്റ്റ് അണ്ടിൽ ബ്ലോക്കിന് കീഴിൽ ഒരു സ്റ്റോപ്പ് ഡ്രൈവിംഗ് ബ്ലോക്ക് ചേർത്തിട്ടുള്ള അതേ പ്രോജക്റ്റ്. പ്രോജക്റ്റ് ഇപ്പോൾ വായിക്കുന്നത് 'When started, drive forward, wait wait up to pressed, and stop driving.' എന്നാണ്.
  • Wall Maze Playground തുറന്നിട്ടില്ലെങ്കിൽ അത് സമാരംഭിച്ച് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.
  • വാൾ മെയ്‌സിന്റെ തുടക്കം മുതൽ VR റോബോട്ട് ഡ്രൈവ് ചെയ്യുന്നത് കാണുക, ബമ്പർ സെൻസർ ഭിത്തിയിൽ അമർത്തുമ്പോൾ നിർത്തുക.
  • [ഡ്രൈവ്] ബ്ലോക്ക്, <Pressing bumper> ബ്ലോക്ക് ഉപയോഗിച്ച് ബമ്പർ സെൻസറിന്റെ അവസ്ഥ പരിശോധിക്കുമ്പോൾ VR റോബോട്ടിനെ മുന്നോട്ട് ഓടിക്കാൻ അനുവദിക്കുന്നു. <Pressing bumper> TRUE ആയി റിപ്പോർട്ട് ചെയ്തുകഴിഞ്ഞാൽ, VR റോബോട്ട് സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങുകയും ഡ്രൈവിംഗ് നിർത്തുകയും ചെയ്യും.

    പ്രോജക്റ്റ് ഫ്ലോ കാണിക്കുന്നതിനായി ഈ പാഠത്തിലെ VEXcode VR പ്രോജക്റ്റ് വേർതിരിച്ചിരിക്കുന്നു. ആരംഭിച്ചപ്പോൾ എന്ന ബ്ലോക്കിന് ശേഷം ഡ്രൈവ് ഫോർവേഡ് ബ്ലോക്ക് വരുന്നു. 'ഇടത് ബമ്പർ അമർത്തുന്നതുവരെ കാത്തിരിക്കുക' എന്ന ബ്ലോക്കിലെ ഡ്രൈവ് ഫോർവേഡ് ബ്ലോക്കിൽ നിന്ന് താഴേക്ക് ഒരു സ്വർണ്ണ അമ്പടയാളം ചൂണ്ടുന്നു. ബ്ലോക്കിന്റെ വലതുവശത്ത് വൃത്താകൃതിയിലുള്ള ചലനത്തെ സൂചിപ്പിക്കുന്ന രണ്ട് വളഞ്ഞ ചുവന്ന അമ്പടയാളങ്ങളും റോബോട്ട് മുന്നോട്ട് നീങ്ങുകയും ബമ്പർ സ്വിച്ച് അമർത്താതിരിക്കുകയും ചെയ്യുമ്പോൾ എന്ത് സംഭവിക്കുമെന്ന് കാണിക്കുന്ന "അമർത്തിയിട്ടിട്ടില്ല (തെറ്റ്)" എന്ന വാക്കുകളും ഉണ്ട്. 'വെയിറ്റ് അൺടോൾ' ബ്ലോക്കിന് കീഴിൽ, സ്റ്റോപ്പ് ഡ്രൈവിംഗ് ബ്ലോക്കിലേക്ക് താഴേക്ക് ചൂണ്ടുന്ന ഒരു പച്ച അമ്പടയാളം, "pressed (true)" എന്ന വാക്കുകൾക്കൊപ്പം, ബമ്പർ സ്വിച്ച് അമർത്തുമ്പോൾ പ്രോജക്റ്റ് സ്റ്റോപ്പ് ഡ്രൈവിംഗ് ബ്ലോക്കിലേക്ക് നീങ്ങുമെന്ന് സൂചിപ്പിക്കുന്നു.

    നിങ്ങളുടെ അറിവിലേക്കായി

    വെയ്റ്റിംഗ്, നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകളുടെ ദൃശ്യവൽക്കരണം പിന്തുടരാൻ, VEXcode VR-ലെ കോഡ് എക്സിക്യൂഷൻ ഹൈലൈറ്റിംഗ് ഫംഗ്ഷൻ കാണുക. ഈ പ്രോജക്റ്റിന്റെ തുടക്കത്തിൽ, വ്യവസ്ഥ പാലിക്കുന്നത് വരെ [Wait until] ബ്ലോക്കിന് ചുറ്റും പച്ച ഹൈലൈറ്റ് ദൃശ്യമാകും. [Wait until] ബ്ലോക്ക് ഒരു വെയിറ്റിംഗ് ബ്ലോക്കായതിനാലാണിത്. ഈ കമാൻഡുകൾ വേഗത്തിൽ നടപ്പിലാക്കുന്നതിനാൽ, പച്ച ഹൈലൈറ്റ് നോൺ-വെയ്റ്റിംഗ് ബ്ലോക്കുകൾ ഒഴിവാക്കുന്നതായി ദൃശ്യമാകും.

    ഈ പാഠത്തിൽ നിന്നുള്ള VEXcode VR പ്രോജക്റ്റിൽ, വെയിറ്റ് അൺടിൽ ബ്ലോക്കിന് ചുറ്റും ഒരു ചുവന്ന കോൾഔട്ട് ബോക്സ് ഉണ്ട്, അത് ഒരു വെയിറ്റിംഗ് ബ്ലോക്ക് ആണെന്ന് സൂചിപ്പിക്കുന്നു.

     

    സ്വിച്ച് ബ്ലോക്കുകൾ ഉപയോഗിക്കുന്നു 

    ഇതാണ് <Bumper pressed>ഉള്ള [Wait until] കമാൻഡ് അടങ്ങിയിരിക്കുന്ന സ്വിച്ച് ബ്ലോക്ക്.  ബൂളിയൻ റിപ്പോർട്ടർ.

    മുകളിൽ പറഞ്ഞതുപോലെ VEXcode VR പ്രോജക്റ്റ്, പക്ഷേ Wait until ബ്ലോക്ക് ഒരു Switch ബ്ലോക്ക് ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിച്ചു. സ്വിച്ച് ബ്ലോക്കിലെ പൈത്തൺ കമാൻഡ് ആദ്യ വരിയിൽ left_bumper.pressed(): എന്ന് വായിക്കാതെ വായിക്കുന്നു. പിന്നെ പൈത്തൺ ബ്ലോക്കിന് താഴെയായി ഇൻഡന്റ് ചെയ്‌താൽ wait (5, msec) എന്ന് വായിക്കും.

    എന്നാൽ left_bumper.pressed() അല്ല:എന്നത് പൈത്തൺ കമാൻഡാണ്, ഇത് നിലവിൽ ഇടത് ബമ്പർ അമർത്തുന്നുണ്ടോ എന്ന് പരിശോധിക്കുന്നു.

    wait (5, MSEC)എന്നത് ഒരു പൈത്തൺ കമാൻഡാണ്, ഇത് പരിശോധനയുടെ നിർവ്വഹണം 5 മില്ലിസെക്കൻഡ് (MSEC) താൽക്കാലികമായി നിർത്തുന്നു, അതിനാൽ ഓരോ 5 MSec-ലും ഇടത് ബമ്പർ അമർത്തുന്നുണ്ടോ ഇല്ലയോ എന്ന് പ്രോജക്റ്റ് പരിശോധിക്കുന്നു. ഈ കോഡ് വരി കോഡിന്റെ ആദ്യ വരിയുടെ അടിയിൽ ഇൻഡന്റ് ചെയ്തിരിക്കുന്നു, കാരണം ഈ കമാൻഡ് അവസ്ഥ (ഈ സാഹചര്യത്തിൽ, ഇടത് ബമ്പർ അമർത്തുന്നത്) പാലിക്കുന്നതുവരെ ആവർത്തിക്കുന്ന സ്വഭാവമാണ്.

    VEXcode VR-ൽ, ഒരു കണ്ടീഷണൽ ലൂപ്പിനൊപ്പം wait കമാൻഡ് എപ്പോഴും ചേർക്കുന്നു. വെയിറ്റ് കമാൻഡിന്റെ ഉദ്ദേശ്യം, VEXcode VR പ്ലാറ്റ്‌ഫോമിന്റെ വെബ് അധിഷ്ഠിത സ്വഭാവം കാരണം, VEXcode VR-ന് ഉദ്ദേശിച്ച രീതിയിൽ പ്രോജക്റ്റ് ശരിയായി പ്രവർത്തിപ്പിക്കാൻ കഴിയുമെന്ന് ഉറപ്പാക്കുക എന്നതാണ്. ഒരു കണ്ടീഷണൽ ലൂപ്പ് ഉപയോഗിക്കുമ്പോൾ wait കമാൻഡ് ഒരിക്കലും ഇല്ലാതാക്കരുത്, കാരണം നിങ്ങളുടെ പ്രോജക്റ്റ് ഉദ്ദേശിച്ച രീതിയിൽ പ്രവർത്തിച്ചേക്കില്ല.

    ഇടതുവശത്തെ ബമ്പർ അമർത്തിയാൽ, റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തും.

ഈ പാഠത്തിന്റെ ബാക്കി ഭാഗം തുടരാൻ അടുത്തത് ബട്ടൺ തിരഞ്ഞെടുക്കുക.