Skip to main content

പാഠം 2: താരതമ്യ ബ്ലോക്കുകൾ ഉപയോഗിക്കുകയും അടുത്തുവരെ വാഹനമോടിക്കുകയും ചെയ്യുക

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

VR റോബോട്ടിന്റെ ആരംഭ സ്ഥാനത്തിന് സമീപം, ചുവന്ന ബോക്സിൽ "A" എന്ന അക്ഷരം ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്ന ചുവർ മേസിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള കാഴ്ച.

പഠന ഫലങ്ങൾ

  • <Greater than> ബ്ലോക്ക് ഒരു ബൂളിയൻ ബ്ലോക്കാണെന്ന് തിരിച്ചറിയുക, ആദ്യത്തെ മൂല്യം രണ്ടാമത്തെ മൂല്യത്തേക്കാൾ വലുതാണോ എന്ന് അത് റിപ്പോർട്ട് ചെയ്യുന്നു.
  • <Less than> ബ്ലോക്ക് ഒരു ബൂളിയൻ ബ്ലോക്കാണെന്ന് തിരിച്ചറിയുക, ആദ്യത്തെ മൂല്യം രണ്ടാമത്തെ മൂല്യത്തേക്കാൾ കുറവാണെങ്കിൽ അത് റിപ്പോർട്ട് ചെയ്യുന്നു.
  • [Wait until] ബ്ലോക്കിൽ <Greater than> അല്ലെങ്കിൽ <Less than> ബ്ലോക്കുകൾ TRUE അല്ലെങ്കിൽ FALSE മൂല്യം റിപ്പോർട്ട് ചെയ്യുന്നുവെന്ന് തിരിച്ചറിയുക.
  • ഡിസ്റ്റൻസ് സെൻസറിന്റെ മൂല്യം 50 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) ത്രെഷോൾഡ് മൂല്യത്തിൽ താഴെയാകുന്നതുവരെ ഒരു VR റോബോട്ട് ഡ്രൈവ് മുന്നോട്ട് കൊണ്ടുപോകുന്ന ഒരു പ്രോജക്റ്റ് എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് വിവരിക്കുക.

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

  • VEXcode VR-ൽ ഒരു പുതിയ പ്രോജക്റ്റ് ആരംഭിച്ച് പ്രോജക്റ്റിന് എന്ന് പേരിടുക Unit5Lesson2. നിങ്ങളുടെ പ്രോജക്റ്റിനായി നിങ്ങൾക്ക് VEXcode ബ്ലോക്കുകൾ, സ്വിച്ച് ബ്ലോക്കുകൾ അല്ലെങ്കിൽ രണ്ട് ബ്ലോക്ക് തരങ്ങളുടെയും സംയോജനം ഉപയോഗിക്കാമെന്ന് ഓർമ്മിക്കുക. 
Select Playground ബട്ടണിന്റെ ഇടതുവശത്ത്, ചുവന്ന ബോക്സിൽ 'Project Name' ബട്ടൺ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്ന VEXcode VR ടൂൾബാർ. പ്രോജക്റ്റിന്റെ പേര് യൂണിറ്റ് 5 പാഠം 2 എന്ന് സജ്ജീകരിച്ചിരിക്കുന്നു.

മതിലുകൾ ഒഴിവാക്കാൻ ദൂര സെൻസർ ഉപയോഗിക്കുക.

  • വർക്ക്‌സ്‌പെയ്‌സിലേക്ക് [ഡ്രൈവ്] ബ്ലോക്ക് വലിച്ചിടുക.
    VEXcode VR ബ്ലോക്ക് പ്രോജക്റ്റ്, When Started ബ്ലോക്കിൽ തുടങ്ങി അതിനു താഴെ ഒരു ഡ്രൈവ് ഫോർവേഡ് ബ്ലോക്ക് ഉണ്ട്. ഡ്രൈവ് ഫോർവേഡ് ബ്ലോക്ക് ഹൈലൈറ്റ് ചെയ്യുന്ന ഒരു ചുവന്ന ബോക്സ് ഉണ്ട്.
  • [ഡ്രൈവ്] ബ്ലോക്കിന് താഴെ ഒരു [വരെ കാത്തിരിക്കുക] ബ്ലോക്ക് അറ്റാച്ചുചെയ്യുക.
    മുമ്പത്തെപ്പോലെ തന്നെ VEXcode VR ബ്ലോക്കുകളുടെ പ്രോജക്റ്റ്, എന്നാൽ ഇപ്പോൾ താഴെ ഒരു ചുവന്ന ബോക്സ് ഉപയോഗിച്ച് ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്ന ഒരു Wait Until ബ്ലോക്ക് ഉണ്ട്. 'When Started, Drive Forward and Wait Until' എന്നാണ് മുഴുവൻ പ്രോജക്റ്റും എഴുതിയിരിക്കുന്നത്. Wait Until ബ്ലോക്കിന്റെ പാരാമീറ്റർ ശൂന്യമാണ്.

ഈ പ്രോജക്റ്റ്, ഭിത്തികളിൽ ഇടിക്കാതെ വാൾ മേസ് പ്ലേഗ്രൗണ്ട് ലൂടെ നാവിഗേറ്റ് ചെയ്യാൻ ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കും. ഈ പ്രോജക്റ്റിൽ നിങ്ങൾ <Less than> ബൂളിയൻ ബ്ലോക്കിനുള്ളിലെ (Distance from) ബ്ലോക്ക് ഉപയോഗിക്കും.

<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 Equal To boolean ബ്ലോക്ക്, '50 equal to 50' എന്ന് വായിക്കുന്നു.

താരതമ്യ ബ്ലോക്കുകൾക്ക് ദശാംശങ്ങൾ, പൂർണ്ണസംഖ്യകൾ അല്ലെങ്കിൽ സംഖ്യാ ബ്ലോക്കുകൾ സ്വീകരിക്കാൻ കഴിയും. (Distance from) ബ്ലോക്ക് പോലുള്ള റൗണ്ട് റിപ്പോർട്ടർ ബ്ലോക്കുകളും അവർ സ്വീകരിക്കുന്നു. ഒരു പ്രോജക്റ്റിൽ ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കുമ്പോൾ (ഡിസ്റ്റൻസ് ഫ്രം) ബ്ലോക്ക് ഒരു താരതമ്യ ബ്ലോക്കിനൊപ്പം ആകാം.

ഈ ഉദാഹരണത്തിൽ, ഒരു VR റോബോട്ടിലെ ഒരു വസ്തുവിൽ നിന്നും ദൂര സെൻസറിൽ നിന്നുമുള്ള ദൂരം 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ) കുറവാണെങ്കിൽ ബ്ലോക്ക് TRUE എന്ന് റിപ്പോർട്ട് ചെയ്യും.

VEXcode VR ലെസ് ദാൻ ബൂളിയൻ ബ്ലോക്ക്, അതിനുള്ളിൽ ഒരു Distance From ബ്ലോക്ക് ഉണ്ട്, അതിൽ 'Front Distance in 50 less millimters' എന്ന് എഴുതിയിരിക്കുന്നു.

  • <Less than> ബൂളിയൻ ബ്ലോക്ക് [Wait until] ബ്ലോക്കിലേക്ക് വലിച്ചിടുക.
  • ബൂളിയൻ റിപ്പോർട്ടർ ബ്ലോക്കിനുള്ളിൽ റൗണ്ട് (ദൂരം) ബ്ലോക്ക് സ്ഥാപിക്കുക.
    മുൻ ഘട്ടങ്ങൾ ഒരുമിച്ച് ചേർക്കുന്ന VEXcode VR ബ്ലോക്ക്സ് പ്രോജക്റ്റ്. മുഴുവൻ പ്രോജക്റ്റും ഇപ്പോൾ വായിക്കുന്നത് "When Started, Drive Forward and Wait Until Front Distance in മില്ലീമീറ്ററിൽ 50 ൽ താഴെ" എന്നാണ്. ഒരു ചുവന്ന ബോക്സ് ലെസ് ദാൻ ബൂളിയൻ ബ്ലോക്കിനെ ഹൈലൈറ്റ് ചെയ്യുന്നു.
  • [Wait until] ബ്ലോക്ക്, വ്യവസ്ഥ പാലിക്കുന്നതുവരെ VR റോബോട്ടിനെ മുന്നോട്ട് നയിക്കും, കൂടാതെ റിപ്പോർട്ട് ചെയ്ത ദൂരം 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്ററിൽ) കുറവാണ്. തുടർന്ന്, പ്രോജക്റ്റ് സ്റ്റാക്കിലെ അടുത്ത ബ്ലോക്കിലേക്ക് നീങ്ങും, അത് [സ്റ്റോപ്പ് ഡ്രൈവിംഗ്] ബ്ലോക്കായിരിക്കും.
    VEXcode VR ബ്ലോക്ക്സ് പ്രോജക്റ്റിലെ യുക്തിയുടെ ഒഴുക്ക് ദൃശ്യവൽക്കരിക്കുന്ന ഒരു ഡയഗ്രം. ഈ പ്രോജക്റ്റ് മുന്നോട്ട് ഡ്രൈവ് ചെയ്തുകൊണ്ടാണ് ആരംഭിക്കുന്നത്, ഫ്രണ്ട് ഡിസ്റ്റൻസ് സെൻസറിന്റെ ദൂരം മില്ലിമീറ്ററിൽ 50-ൽ താഴെയാകുന്നതുവരെ ആ കമാൻഡ് നിലനിർത്തുന്നു, അതിനുശേഷം ഒരു സ്റ്റോപ്പ് ഡ്രൈവിംഗ് ബ്ലോക്ക് ഡ്രൈവ് ഫോർവേഡ് കമാൻഡ് അവസാനിപ്പിക്കുന്നു.
  • [Wait until] ബ്ലോക്കിന് ശേഷം ഒരു [Stop driving] ബ്ലോക്ക് ആവശ്യമാണ്, കാരണം VR റോബോട്ട് നിർത്താൻ നിർദ്ദേശിക്കുന്നത് വരെ അത് ഡ്രൈവ് ചെയ്യുന്നത് തുടരും. പ്രോജക്റ്റിലേക്ക് ഒരു [സ്റ്റോപ്പ് ഡ്രൈവിംഗ്] ബ്ലോക്ക് ചേർക്കുക.
    VEXcode VR, മുമ്പത്തെ പ്രോജക്റ്റിനെ ബ്ലോക്ക് ചെയ്യുന്നു, Wait Until ബ്ലോക്കിന് ശേഷം ഒരു Stop Driving ബ്ലോക്ക് ചേർക്കുന്നു. മുഴുവൻ പ്രോജക്റ്റും ഇപ്പോൾ ഇങ്ങനെയാണ്, "When Started Drive Forward and Wait Until Front Distance in Milter" എന്നത് 50-ൽ താഴെയാണ്, അതിനുശേഷം "Stop Driving" എന്ന് പറയുന്നു.
  • വാൾ മെയ്സ് പ്ലേഗ്രൗണ്ട് തുറന്നിട്ടില്ലെങ്കിൽ അത് സമാരംഭിച്ച് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.
  • വാൾ മെയ്‌സിന്റെ തുടക്കം മുതൽ VR റോബോട്ട് ഡ്രൈവ് ചെയ്യുന്നത് കാണുക, തുടർന്ന് ഡിസ്റ്റൻസ് സെൻസർ അത് ഭിത്തിയിൽ നിന്ന് 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ) താഴെയാണെന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ നിർത്തുക.
    VR റോബോട്ടിന്റെ ആരംഭ സ്ഥാനത്തിന് സമീപം A എന്ന അക്ഷരമുള്ള മതിൽ മേസിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള കാഴ്ച. ബ്ലോക്ക്സ് പ്രോജക്ടിന്റെ ഫലമായി വിആർ റോബോട്ട് ഇപ്പോൾ മുന്നോട്ട് നീങ്ങിയിരിക്കുന്നു.
  • [Wait until] ബ്ലോക്കിനുള്ളിൽ (Distance from) ബ്ലോക്കുള്ള <Less than> ബ്ലോക്ക് ഉപയോഗിച്ച്, നിർത്തുന്നതിന് മുമ്പ് മതിലിൽ നിന്ന് 50 മില്ലിമീറ്ററിൽ (mm) താഴെ വരെ കാത്തിരിക്കാൻ VR റോബോട്ടിനോട് നിർദ്ദേശിക്കുന്നു.
  • VR റോബോട്ടിനെ ആരംഭ സ്ഥാനത്തേക്ക് തിരികെ നീക്കാൻ പ്ലേഗ്രൗണ്ട് റീസെറ്റ് ചെയ്യുക.

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

ഈ പാഠത്തിൽ, നിങ്ങൾ <Greater than>, <Less than>, <Equal to> ബൂളിയൻ ബ്ലോക്കുകളെക്കുറിച്ച് പഠിച്ചു. താഴെയുള്ള ചിത്രം സ്വിച്ച് ബൂളിയൻ താരതമ്യ ബ്ലോക്കുകൾ കാണിക്കുന്നു. ഒരു സ്വിച്ച് ബൂളിയൻ ബ്ലോക്ക് ഉദ്ദേശിച്ച രീതിയിൽ പ്രവർത്തിക്കണമെങ്കിൽ, സ്വിച്ച് പൈത്തൺ ഫംഗ്ഷനുകൾ ശരിയായ അക്ഷരവിന്യാസവും ചിഹ്നനവും ഉപയോഗിച്ച് നൽകണം. 

ശ്രദ്ധിക്കുക, സ്വിച്ച് <Equal to> ബ്ലോക്ക് രണ്ട് തുല്യ ചിഹ്നങ്ങൾ (==)ഉപയോഗിക്കുന്നു. കാരണം, പൈത്തണിൽ, ഒരു തുല്യ ചിഹ്നം (=) ഒരു മൂല്യത്തിന്റെ അസൈൻമെന്റിനെ പ്രതിനിധീകരിക്കുന്നു (ഉദാഹരണത്തിന്, x = 10), അതേസമയം രണ്ട് തുല്യ ചിഹ്നങ്ങൾ (==) രണ്ട് മൂല്യങ്ങൾ തുല്യമാണോ എന്ന് പരിശോധിക്കുന്നു. സ്വിച്ച് <Equal to> ബ്ലോക്ക് ഉപയോഗിക്കുമ്പോൾ രണ്ട് തുല്യ ചിഹ്നങ്ങൾ ഉപയോഗിക്കുന്നത് ഉറപ്പാക്കുക. 
മൂന്ന് VEXcode VR ബൂളിയൻ ബ്ലോക്കുകളുടെയും അവയുടെ അനുബന്ധ സ്വിച്ച് ബ്ലോക്കുകളുടെയും താരതമ്യം. പൈത്തണിൽ ലെസ് താൻ ബ്ലോക്ക് '25 < 50' എന്നും, ഗ്രേറ്റർ താൻ ബ്ലോക്ക് പൈത്തണിൽ '100 > 50' എന്നും, പൈത്തണിൽ ഈക്വൽ ടു ബ്ലോക്ക് '50 == 50' എന്നും എഴുതിയിരിക്കുന്നു. അവസാന ഉദാഹരണത്തിലെ ഇരട്ട തുല്യ ചിഹ്നങ്ങൾ ഒരു ചുവന്ന ബോക്സ് ഹൈലൈറ്റ് ചെയ്യുന്നു, പൈത്തണിൽ രണ്ട് മൂല്യങ്ങളെ തുല്യമായി എങ്ങനെ താരതമ്യം ചെയ്യാമെന്ന് ഇത് കാണിക്കുന്നു.

ഒരു വസ്തുവിൽ നിന്ന് 50 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ) താഴെ ദൂരം വരെ VR റോബോട്ട് മുന്നോട്ട് ഓടിക്കുന്ന ഒരു ഉദാഹരണ പ്രോജക്റ്റും നിങ്ങൾ കണ്ടു. പിന്നെ, വിആർ റോബോട്ട് നിർത്തും. വലതുവശത്തുള്ള പ്രോജക്റ്റ് ഒരു സ്വിച്ച് ബ്ലോക്കിനുള്ളിലെ അനുബന്ധ പൈത്തൺ കമാൻഡുകൾ കാണിക്കുന്നു. കമാൻഡ്, while not front_distance.get_distance(MM) < 50, റിപ്പോർട്ട് ചെയ്ത ദൂരം ഒരു വസ്തുവിൽ നിന്ന് 50 MM-ൽ കുറവാണോ എന്ന് പരിശോധിക്കാൻ റോബോട്ടിനോട് പറയുന്നു.

അടുത്ത ഇൻഡന്റ് ചെയ്ത കോഡ് വരി,വെയിറ്റ് (5, MSEC),കോഡിനെ 5 മില്ലിസെക്കൻഡ് താൽക്കാലികമായി നിർത്തുന്നു. ഒരു വസ്തുവിൽ നിന്ന് റിപ്പോർട്ട് ചെയ്ത ദൂരം 50 MM-ൽ കുറവാണോ എന്ന് പരിശോധിക്കുന്ന കമാൻഡ്, അവസ്ഥ വീണ്ടും പരിശോധിക്കുന്നതിന് മുമ്പ് 5 MSEC വരെ കാത്തിരിക്കും. 

വലതുവശത്തുള്ള ഒരു സ്വിച്ച് ബ്ലോക്കിലേക്ക് പരിവർത്തനം ചെയ്ത വെയ്റ്റ് അൺടിൽ ബ്ലോക്കുമായുള്ള ഞങ്ങളുടെ VEXcode VR പ്രോജക്റ്റിന്റെ താരതമ്യം. പുതിയ സ്വിച്ച് ബ്ലോക്ക് പൈത്തണിൽ 'while not front_distance.get_distance(MM) < 50: wait(5, msec)' എന്ന് വായിക്കുന്നു.

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