VEXcode V5-ലെ കസ്റ്റം കൺട്രോളർ കോഡ്

കൺട്രോളർ ഉപയോഗിക്കുന്നത് നിങ്ങളുടെ റോബോട്ടിനെ ഡ്രൈവ് ചെയ്യുന്നതും ഒരു ടാസ്‌ക് പൂർത്തിയാക്കാൻ നീക്കുന്നതും എളുപ്പമാക്കുന്നു. എന്നിരുന്നാലും, ഡ്രൈവ് പ്രോഗ്രാം ഉപയോഗിക്കുന്നതിന് പരിമിതികളുണ്ട്, നിങ്ങളുടെ റോബോട്ട് ബിൽഡിനെയോ അല്ലെങ്കിൽ നിങ്ങളുടെ ചുമതലയെയോ ആശ്രയിച്ച്, നിങ്ങൾക്ക് വ്യത്യസ്ത നിയന്ത്രണങ്ങൾ ആവശ്യമായി വന്നേക്കാം. കൺട്രോളർ കോഡ് ചെയ്യുന്നത് നിങ്ങളുടെ റോബോട്ടിനും നിങ്ങളുടെ ചുമതലയ്ക്കും കൂടുതൽ അനുയോജ്യമാക്കുന്നതിന് കൺട്രോളർ ഒപ്റ്റിമൈസ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. VEXcode V5-ൽ കൺട്രോളർ കോഡ് ചെയ്യാൻ നിരവധി മാർഗങ്ങളുണ്ട്. ഓരോന്നിനും അതിന്റേതായ ഗുണങ്ങളും പരിമിതികളുമുണ്ട്, കൂടാതെ ചില രീതികൾ ആവശ്യമുള്ള ഫലത്തെ ആശ്രയിച്ച് ചില സാഹചര്യങ്ങൾക്ക് കൂടുതൽ അനുയോജ്യമാണ്.

VEXcode V5-ൽ കൺട്രോളർ കോഡ് ചെയ്യുന്നതിനുള്ള മൂന്ന് വ്യത്യസ്ത ഓപ്ഷനുകളിലൂടെ ഈ ലേഖനം നിങ്ങളെ കൊണ്ടുപോകും. ഓരോ രീതിയും അതിന്റെ ഗുണങ്ങൾ, പരിമിതികൾ, ഒരു രീതി തിരഞ്ഞെടുക്കുമ്പോൾ നിങ്ങളെ നയിക്കാൻ സഹായിക്കുന്ന ഉപയോഗ സാഹചര്യത്തിന്റെ ഉദാഹരണം എന്നിവ ഉപയോഗിച്ച് വിവരിക്കുന്നതാണ്. ഈ ലേഖനത്തിന്റെ ഉദ്ദേശ്യങ്ങൾക്കായി, കാണിച്ചിരിക്കുന്ന എല്ലാ കോഡ് ഉദാഹരണങ്ങളും ക്ലോബോട്ടിനായി സൃഷ്ടിച്ചതാണ്. എന്നിരുന്നാലും, builds.vex.comൽ കാണപ്പെടുന്ന മറ്റ് നിരവധി ബിൽഡുകളിലും ഇഷ്‌ടാനുസൃത ബിൽഡുകളിലും ഇതേ ആശയങ്ങൾ പ്രയോഗിക്കാൻ കഴിയും.

ഓപ്ഷൻ 1: ഉപകരണ കോൺഫിഗറേഷനിൽ ബട്ടണുകൾ നൽകൽ

സ്പീഡ്ബോട്ട് അല്ലെങ്കിൽ ക്ലോബോട്ട് പോലുള്ള ഒരു സ്റ്റാൻഡേർഡ് ബിൽഡ് ഉപയോഗിക്കുകയും വേഗത്തിൽ പ്രവർത്തിപ്പിക്കാൻ ആഗ്രഹിക്കുകയും ചെയ്യുമ്പോൾ ഈ ഓപ്ഷൻ മികച്ചതാണ്.

ഉപകരണ കോൺഫിഗറേഷനിലെ കൺട്രോളറിലെ ബട്ടണുകളിലേക്ക് മോട്ടോറുകൾ, ഒരു ഡ്രൈവ്ട്രെയിൻ അല്ലെങ്കിൽ മോട്ടോർ ഗ്രൂപ്പുകൾ എന്നിവ നിയോഗിക്കാൻ ഈ ഓപ്ഷൻ നിങ്ങളെ അനുവദിക്കുന്നു. ഡിവൈസ് കോൺഫിഗറേഷനിൽ കൺട്രോളറിലേക്ക് ബട്ടണുകൾ എങ്ങനെ നൽകാം എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, ഈ ലേഖനം കാണുക.

കൺട്രോളർ ഓപ്ഷനുകൾ കാണിച്ചിരിക്കുന്ന VEXcode V5 ഉപകരണ മെനു. ബട്ടൺ നിയന്ത്രണങ്ങളുടെ ഡയഗ്രം കാണിക്കുന്നത് രണ്ട് ജോയ്സ്റ്റിക്കുകളും ഒരു ടാങ്ക് ഡ്രൈവ് കോൺഫിഗറേഷനിലാണ് റോബോട്ടിനെ നയിക്കുന്നത് എന്നാണ്. മുകളിലേക്കും താഴേക്കും ബട്ടണുകൾ ഒരു ArmMotorGroup-നെ നിയന്ത്രിക്കുന്നു, R ആക്സിസ് ബട്ടണുകൾ ഒരു ClawMotor-നെ നിയന്ത്രിക്കുന്നു.

ഓപ്ഷൻ 1 ന്റെ സംഗ്രഹം: ഉപകരണ കോൺഫിഗറേഷനിൽ ബട്ടണുകൾ നൽകൽ

പ്രയോജനങ്ങൾ പരിമിതികൾ ഉദാഹരണ സാഹചര്യം
  • കോഡിംഗ് ആവശ്യമില്ലാത്ത ദ്രുത സജ്ജീകരണം
  • ഏറ്റവും ലളിതമായ രീതി
  • എളുപ്പത്തിൽ ക്രമീകരിക്കാവുന്നതാണ്
  • ബട്ടണുകൾക്ക് വ്യക്തിഗത മോട്ടോറുകൾ, ഒരു സ്റ്റാൻഡേർഡ് ഡ്രൈവ്ട്രെയിൻ, മോട്ടോർ ഗ്രൂപ്പുകൾ എന്നിവ നൽകാൻ കഴിയും.
  • കൺട്രോളറിലെ ബട്ടണുകളുടെ എണ്ണത്തിലേക്ക് ബട്ടൺ അസൈൻമെന്റുകൾ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.
  • ഡ്രൈവ്‌ട്രെയിൻ 4 മോട്ടോറുകളിൽ കൂടുതലാകരുത് അല്ലെങ്കിൽ ഇഷ്ടാനുസൃതമാക്കാൻ പാടില്ല (ഒരു സ്റ്റാൻഡേർഡ് ഡ്രൈവ് മാത്രമേ പിന്തുണയ്ക്കൂ, ഒരു H ഡ്രൈവ്, ഹോളോണമിക് അല്ലെങ്കിൽ മറ്റ് ഇഷ്ടാനുസൃത ഡ്രൈവ്‌ട്രെയിൻ പിന്തുണയ്ക്കുന്നില്ല)
  • സ്പീഡ്ബോട്ട്, ക്ലോബോട്ട് പോലുള്ള ഒരു സ്റ്റാൻഡേർഡ് ബിൽഡ് കൈകാര്യം ചെയ്യൽ അല്ലെങ്കിൽ ആ സ്റ്റാൻഡേർഡ് ബിൽഡുകളുടെ ലളിതമായ പരിഷ്ക്കരണം. ഉദാഹരണത്തിന്, ഒരു മോട്ടോർ ഗ്രൂപ്പ് നിയന്ത്രിക്കുന്ന മുൻവശത്ത് ഇൻടേക്ക് ഘടിപ്പിച്ചിരിക്കുന്ന ഒരു സ്പീഡ്ബോട്ട്.
  • റോബോട്ടിലെ വ്യത്യസ്ത പെരുമാറ്റങ്ങളുമായി പൊരുത്തപ്പെടുന്ന ബട്ടണുകൾ ഏതൊക്കെയാണെന്ന് അധികം കോഡിംഗ് ഇല്ലാതെ വേഗത്തിൽ കൈകാര്യം ചെയ്യുന്നു.

ഓപ്ഷൻ 2: ഒരു ഫോറെവർ ലൂപ്പ് ഉപയോഗിക്കുന്നു

നിങ്ങൾ ഒരു സ്റ്റാൻഡേർഡ് ബിൽഡിന് പകരം ഒരു കസ്റ്റം ബിൽഡ് ഉപയോഗിക്കുകയാണെങ്കിൽ, അല്ലെങ്കിൽ നിങ്ങളുടെ കൺട്രോളറിൽ കൂടുതൽ ഇച്ഛാനുസൃതമാക്കൽ സാധ്യമാക്കാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ഈ ഓപ്ഷൻ നല്ലതാണ്. നിങ്ങളുടെ കൺട്രോളറിനായി ഇഷ്ടാനുസൃത കോഡ് സൃഷ്ടിക്കുന്നതിനുള്ള ഒരു മികച്ച ആമുഖമാണ് ഫോറെവർ ലൂപ്പ് ഉപയോഗിക്കുന്നത്.

ഈ ഓപ്ഷൻ കൺട്രോളറിനും അനുബന്ധ ബട്ടണുകൾക്കുമുള്ള എല്ലാ അവസ്ഥകളും ഒരു ഫോറെവർ ലൂപ്പിൽ സ്ഥാപിക്കുന്നു. ഇത് കൂടുതൽ വഴക്കം നൽകുന്നു, പ്രത്യേകിച്ച് ഇഷ്ടാനുസൃത ബിൽഡ് ഡിസൈനുകളിൽ, പക്ഷേ കുറച്ച് കോഡിംഗ് അനുഭവവും ആവശ്യമാണ്. എന്നിരുന്നാലും, ഈ ഓപ്ഷൻ ഉപയോഗിക്കുമ്പോൾ പരിഗണിക്കേണ്ട ഒരു കാര്യം, നിങ്ങളുടെ പ്രോജക്റ്റിന്റെ ദൈർഘ്യവും സങ്കീർണ്ണതയുമാണ്. കൂടുതൽ കണ്ടീഷനുകൾ ചേർക്കുന്തോറും കോഡ് സ്റ്റാക്കിന്റെ നീളം കൂടും. ഇതിനർത്ഥം ഒന്നിലധികം ബ്ലോക്കുകൾ ക്രമത്തിൽ നടപ്പിലാക്കേണ്ടിവരുമെന്നാണ്, കൂടാതെ ധാരാളം ബ്ലോക്കുകൾ ഉള്ളപ്പോൾ, ഇത് പ്രോജക്റ്റ് നിർവ്വഹണത്തെ മന്ദഗതിയിലാക്കിയേക്കാം. മന്ദഗതിയിലുള്ള പ്രോജക്റ്റ് നിർവ്വഹണം കൺട്രോളർ ബട്ടണുകൾ അമർത്തുന്നതിനും റോബോട്ട് സ്വഭാവം കാണുന്നതിനും ഇടയിൽ ഒരു കാലതാമസം സൃഷ്ടിച്ചേക്കാം.

താഴെ കാണിച്ചിരിക്കുന്ന പ്രത്യേക ഉദാഹരണം, ഒരു കസ്റ്റം ഡിസൈൻ റോബോട്ടുള്ള (ഒരു കസ്റ്റം ഡ്രൈവ്ട്രെയിനുള്ള ഒരു റോബോട്ട് പോലുള്ളവ) ഒരു ഫോറെവർ ലൂപ്പ് ഉപയോഗിച്ച് റോബോട്ടിനെ ഓടിക്കാനും വസ്തുക്കളുമായി ഇടപഴകുന്നതിന് നഖവും കൈയും കൈകാര്യം ചെയ്യാനും ഉപയോഗിക്കാവുന്ന ഒരു മാർഗമാണ്.

ഓപ്ഷൻ 2 ബ്ലോക്കുകൾ ഉള്ള VEXcode V5 വർക്ക്‌സ്‌പെയ്‌സ് പ്രോജക്റ്റ് തുറന്നു. പ്രോജക്റ്റിന് ബ്ലോക്കുകളുടെ ഒരു സ്റ്റാക്ക് ഉണ്ട്, അതിൽ കോൺഫിഗർ ചെയ്ത ഉപകരണങ്ങളുമുണ്ട്. ഡിവൈസസ് മെനു വശത്തേക്ക് തുറന്ന് ഇനിപ്പറയുന്ന ഉപകരണങ്ങൾ ലിസ്റ്റ് ചെയ്യുന്നു: കൺട്രോളർ1, പോർട്ട് 3-ൽ ClawMotor, പോർട്ട് 8-ൽ ആംമോട്ടർ, പോർട്ട് 1-ൽ ലെഫ്റ്റ്മോട്ടർ, പോർട്ട് 10-ൽ റൈറ്റ്മോട്ടർ. കൺട്രോളർ ഇൻപുട്ട് കൈകാര്യം ചെയ്യുന്നതിനായി വർക്ക്‌സ്‌പെയ്‌സിൽ ബ്ലോക്കുകളുടെ ഒരു കൂട്ടം ഉണ്ട്. സ്റ്റാക്ക് 'When started, ArmMotor stopping' എന്നത് 'hold' ആയും ClawMotor stopping 'hold' ആയും സജ്ജീകരിക്കുന്നു. ബാക്കിയുള്ള സ്റ്റാക്ക് ഒരു ഫോറെവർ ലൂപ്പിൽ അടങ്ങിയിരിക്കുന്നു. ഇത് Forever എന്ന് വായിക്കുന്നു, LeftMotor പ്രവേഗം Controller1 3 position % ആക്കുക, LeftMotor മുന്നോട്ട് തിരിക്കുക, RightMotor പ്രവേഗം Controller1 2 position % ആക്കുക, RightMotor മുന്നോട്ട് തിരിക്കുക. അടുത്തതായി, കൺട്രോളർ1 അപ് അമർത്തിയാൽ ആംമോട്ടർ മുകളിലേക്ക് സ്പിൻ ചെയ്യുക, അല്ലെങ്കിൽ കൺട്രോളർ1 ഡൗൺ അമർത്തിയാൽ ആംമോട്ടർ താഴേക്ക് സ്പിൻ ചെയ്യുക, അല്ലെങ്കിൽ ആംമോട്ടർ നിർത്തുക. അവസാനമായി, കൺട്രോളർ1 എ അമർത്തിയാൽ ClawMotor തുറക്കുക, അല്ലെങ്കിൽ കൺട്രോളർ1 ബി അമർത്തിയാൽ ClawMotor അടയ്ക്കുക, അല്ലെങ്കിൽ ClawMotor നിർത്തുക.

"ഓപ്ഷൻ 2" VEXcode V5 പ്രോജക്റ്റ് ഫയൽ >ഡൗൺലോഡ് ചെയ്യുക.

ഓപ്ഷൻ 2 കോഡിന്റെ വിശദീകരണം.

കോഡ് പീസ് വിശദീകരണം
ഓപ്ഷൻ 2 VEXcode V5 പ്രോജക്റ്റിലെ ബ്ലോക്കുകളുടെ സ്റ്റാക്കിന്റെ ക്ലോസ് അപ്പ്. സ്റ്റാക്കിന്റെ ഫോറെവർ ലൂപ്പിന് പുറത്തുള്ള രണ്ട് ബ്ലോക്കുകൾ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു, അവ "ArmMotor stopping to hold" എന്നും "ClawMotor stopping to hold" എന്നും വായിക്കുന്നു. ഈ കോഡ് ഉദാഹരണത്തിന് ഒരു Clawbot ഉപയോഗിച്ചു. കൺട്രോളറിലെ ബട്ടണുകൾ ഉപയോഗിച്ച് കൈ ഉയർത്തുകയും താഴ്ത്തുകയും ചെയ്യുമ്പോൾ, ബട്ടൺ റിലീസ് ചെയ്യുമ്പോൾ, ഗുരുത്വാകർഷണം കാരണം കൈ താഴേക്ക് വീഴും. കൺട്രോളറിലെ ബട്ടണുകൾ റിലീസ് ചെയ്തതിനു ശേഷവും കൈയും നഖവും "പിടിക്കാൻ" സജ്ജമാക്കുന്നത്, രണ്ടും സ്ഥാനത്ത് തുടരുമെന്ന് ഉറപ്പാക്കും.
ഓപ്ഷൻ 2 VEXcode V5 പ്രോജക്റ്റിലെ ബ്ലോക്കുകളുടെ സ്റ്റാക്കിന്റെ ക്ലോസ് അപ്പ്. സ്റ്റാക്കിന്റെ ഫോറെവർ ലൂപ്പിനുള്ളിൽ നാല് ബ്ലോക്കുകൾ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു. അവർ Forever വായിച്ചു, LeftMotor പ്രവേഗം Controller1 3 position % ആക്കി, LeftMotor മുന്നോട്ട് തിരിക്കുക, RightMotor പ്രവേഗം Controller1 2 position % ആക്കി, RightMotor മുന്നോട്ട് തിരിക്കുക.

 

ബട്ടൺ ലേഔട്ട് ദൃശ്യവൽക്കരിക്കുന്നതിനുള്ള V5 കൺട്രോളർ.

ഈ കോഡ് ഉദാഹരണത്തിന് ഒരു Clawbot ഉപയോഗിച്ചു. കൺട്രോളറിലെ ബട്ടണുകൾ ഉപയോഗിച്ച് കൈ ഉയർത്തുകയും താഴ്ത്തുകയും ചെയ്യുമ്പോൾ, ബട്ടൺ റിലീസ് ചെയ്യുമ്പോൾ, ഗുരുത്വാകർഷണം കാരണം കൈ താഴേക്ക് വീഴും. കൺട്രോളറിലെ ബട്ടണുകൾ റിലീസ് ചെയ്തതിനു ശേഷവും കൈയും നഖവും "പിടിക്കാൻ" സജ്ജമാക്കുന്നത്, രണ്ടും സ്ഥാനത്ത് തുടരുമെന്ന് ഉറപ്പാക്കും.

കൺട്രോളറിൽ ഏതൊക്കെ ബട്ടണുകൾ അമർത്തുന്നുവെന്ന് തുടർച്ചയായി പരിശോധിക്കുന്നതിന് ഒരു ഫോറെവർ ലൂപ്പ് ഉപയോഗിക്കുന്നു.

[മോട്ടോർ പ്രവേഗം സജ്ജമാക്കുക] ബ്ലോക്കുകൾ മോട്ടോർ പ്രവേഗം 2 ഉം 3 ഉം അക്ഷങ്ങളിൽ നിലവിലെ കൺട്രോളറിന്റെ സ്ഥാനത്തേക്ക് സജ്ജമാക്കാൻ ഉപയോഗിക്കുന്നു. ഇത് ഒരു കാർ ഡ്രൈവ് ചെയ്യാൻ സജ്ജമാക്കുന്നതിന് തുല്യമാണ്. അത് കാറിനെ ചലിപ്പിക്കണമെന്നില്ല, മറിച്ച് അത് നേരെയാക്കുക മാത്രമാണ് ചെയ്യുന്നത്.

ഓരോ ജോയിസ്റ്റിക്ക് അച്ചുതണ്ടും -100 നും +100 നും ഇടയിലുള്ള ഒരു മൂല്യം നൽകുന്നു, കേന്ദ്രീകരിക്കുമ്പോൾ പൂജ്യം മൂല്യം നൽകുന്നു. ഇതിനർത്ഥം ജോയിസ്റ്റിക്ക് അക്ഷങ്ങൾ തള്ളുമ്പോൾ -100% മുതൽ 100% വരെ തുല്യമാണ് എന്നാണ്. 100 അല്ലെങ്കിൽ -100 ലേക്ക് അച്ചുതണ്ടുകൾ കൂടുതൽ തള്ളപ്പെടുന്തോറും മോട്ടോർ വേഗത്തിൽ കറങ്ങും.

[സ്പിൻ] ബ്ലോക്ക് പിന്നീട് മോട്ടോർ ചലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. ദിശ സജ്ജീകരിച്ചുകഴിഞ്ഞാൽ കാറിൽ ഗ്യാസ് അമർത്തുന്നതിന് തുല്യമാണിത്. ഇത് ഓരോ മോട്ടോറിനെയും നാല് കൺട്രോളർ അക്ഷങ്ങളിൽ ഒന്ന് ഉപയോഗിച്ച് നിയന്ത്രിക്കാൻ അനുവദിക്കുന്നു. 

ഓപ്ഷൻ 2 VEXcode V5 പ്രോജക്റ്റിലെ ബ്ലോക്കുകളുടെ സ്റ്റാക്കിന്റെ ക്ലോസ് അപ്പ്. സ്റ്റാക്കിന്റെ ഫോറെവർ ലൂപ്പിനുള്ളിൽ ഒരു if, else if, else ബ്ലോക്ക് ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു. കൺട്രോളർ1 അപ് അമർത്തിയാൽ ആംമോട്ടർ മുകളിലേക്ക് സ്പിൻ ചെയ്യുക, അല്ലെങ്കിൽ കൺട്രോളർ1 ഡൗൺ അമർത്തിയാൽ ആംമോട്ടർ താഴേക്ക് സ്പിൻ ചെയ്യുക, അല്ലെങ്കിൽ ആംമോട്ടർ നിർത്തുക എന്നാണ് ഇത് പറയുന്നത്.

 

ഈ കോഡ് ഉദാഹരണത്തിന് ഒരു Clawbot ഉപയോഗിച്ചു. കൺട്രോളറിലെ ബട്ടണുകൾ ഉപയോഗിച്ച് കൈ ഉയർത്തുകയും താഴ്ത്തുകയും ചെയ്യുമ്പോൾ, ബട്ടൺ റിലീസ് ചെയ്യുമ്പോൾ, ഗുരുത്വാകർഷണം കാരണം കൈ താഴേക്ക് വീഴും. കൺട്രോളറിലെ ബട്ടണുകൾ റിലീസ് ചെയ്തതിനു ശേഷവും കൈയും നഖവും "പിടിക്കാൻ" സജ്ജമാക്കുന്നത്, രണ്ടും സ്ഥാനത്ത് തുടരുമെന്ന് ഉറപ്പാക്കും.

കൺട്രോളറിൽ അമർത്തുന്നതോ റിലീസ് ചെയ്യുന്നതോ ആയ ബട്ടണുകളിലേക്ക് ചില പെരുമാറ്റങ്ങളെ മാപ്പ് ചെയ്യാൻ [If then else if then else] ബ്ലോക്ക് ഉപയോഗിക്കുന്നു. ഈ കോഡ് വിഭാഗത്തിൽ, മുകളിലേക്കോ താഴേക്കോ ബട്ടണുകൾ അമർത്തിയാൽ വ്യവസ്ഥകൾ സജ്ജീകരിച്ചിരിക്കുന്നു. അങ്ങനെയാണെങ്കിൽ, കൈ ഉയർത്തുക, താഴ്ത്തുക തുടങ്ങിയ ചില പെരുമാറ്റങ്ങൾ സംഭവിക്കും. ഈ അവസ്ഥയുടെ മറ്റൊരു ഭാഗമുണ്ട്, ഒരു ബട്ടണും അമർത്തിയില്ലെങ്കിൽ, കൈ ചലനം നിർത്താൻ സജ്ജമാക്കിയിരിക്കുന്നു.

ക്ലോവിനായുള്ള പ്രോജക്റ്റിലെ കോഡിന്റെ ഇനിപ്പറയുന്ന വിഭാഗം അതേ വിശദീകരണം പിന്തുടരുന്നുവെന്ന് ശ്രദ്ധിക്കുക.

ഓപ്ഷൻ 2 ന്റെ സംഗ്രഹം: ഒരു ഫോറെവർ ലൂപ്പ് ഉപയോഗിക്കുന്നു

പ്രയോജനങ്ങൾ പരിമിതികൾ ഉദാഹരണ സാഹചര്യം
  • ഇഷ്ടാനുസൃത ബിൽഡുകൾ, പ്രത്യേകിച്ച് 4-ൽ കൂടുതൽ മോട്ടോറുകളുള്ള ഡ്രൈവ്‌ട്രെയിനുകൾ എന്നിവ ഉൾക്കൊള്ളാൻ കഴിയും.
  • ഒരൊറ്റ ബട്ടണിലേക്ക് ഒന്നിലധികം പെരുമാറ്റങ്ങൾ നൽകാം
  • കൺട്രോളറിലെ വ്യത്യസ്ത അക്ഷങ്ങളിലേക്ക് പെരുമാറ്റങ്ങൾ നിയോഗിക്കാൻ കഴിയും (ഉപകരണ കോൺഫിഗറേഷനിലെ ലെഫ്റ്റ് ആർക്കേഡ്, റൈറ്റ് ആർക്കേഡ്, സ്പ്ലിറ്റ് ആർക്കേഡ്, ടാങ്ക് ഡ്രൈവ് എന്നിവയുടെ ഏക ഓപ്ഷനുകൾക്ക് വിരുദ്ധമായി)
  • കുറച്ച് കോഡിംഗ് പരിജ്ഞാനം ആവശ്യമാണ് (കണ്ടീഷണലുകൾ, ലൂപ്പുകൾ, കൺട്രോളറിലെ ബട്ടണുകൾ/ജോയ്സ്റ്റിക്കുകൾ എന്നിവയെക്കുറിച്ചുള്ള അറിവ്)
  • പ്രോജക്റ്റ് നിർവ്വഹണം മന്ദഗതിയിലാകാനുള്ള സാധ്യത, അല്ലെങ്കിൽ ബട്ടൺ പ്രതികരണ സമയത്തിലെ കാലതാമസം. എല്ലാ കമാൻഡുകളും ഒരൊറ്റ ഫോറെവർ ലൂപ്പിൽ അടങ്ങിയിരിക്കുന്നതിനാൽ, കോഡിന്റെ ദൈർഘ്യവും വ്യവസ്ഥകളും അനുസരിച്ച് കോഡ് എക്സിക്യൂഷൻ സാവധാനത്തിൽ പ്രവർത്തിക്കും.
  • ഒരു ഇഷ്ടാനുസൃതമായി നിർമ്മിച്ച റോബോട്ടിനൊപ്പം, പ്രത്യേകിച്ച് നിലവാരമില്ലാത്ത ഡ്രൈവ്‌ട്രെയിനിൽ, കൺട്രോളർ ഉപയോഗിക്കുന്നത്
  • ഒരൊറ്റ ബട്ടണിലേക്ക് ഒന്നിലധികം പെരുമാറ്റങ്ങൾ നിയോഗിക്കാൻ ആഗ്രഹിക്കുമ്പോൾ. ഉദാഹരണത്തിന്, മുകളിലേക്കുള്ള ബട്ടൺ അമർത്തുമ്പോൾ, നഖത്തിന് ഒരു വസ്തുവിന് ചുറ്റും തുറക്കാനും മുന്നോട്ട് നീങ്ങാനും അടയ്ക്കാനും കഴിയും.

ഓപ്ഷൻ 3: ഇവന്റുകൾ ഉപയോഗിക്കൽ

നിങ്ങളുടെ കൺട്രോളറിൽ ധാരാളം ഇഷ്ടാനുസൃതമാക്കൽ ആവശ്യമുണ്ടെങ്കിൽ, ഇവന്റുകൾ ഉപയോഗിക്കുക എന്നതാണ് നിങ്ങൾക്ക് ഏറ്റവും നല്ല ഓപ്ഷൻ. ഒരു ബട്ടൺ അമർത്തുന്നത് തന്നെ ഒന്നിലധികം റോബോട്ടുകളുടെ പെരുമാറ്റങ്ങൾക്ക് കാരണമാകും, ഉദാഹരണത്തിന് ഒരു ബട്ടൺ അമർത്തി നഖം തുറക്കുക, കൈ ഉയർത്തുക, ഒരു നിശ്ചിത ദൂരം മുന്നോട്ട് ഓടിക്കുക. ഒരു ഫോറെവർ ലൂപ്പിനുള്ളിൽ ഒരു ബട്ടണിൽ ഒന്നിലധികം പെരുമാറ്റങ്ങൾ കോഡ് ചെയ്യാൻ ശ്രമിക്കുന്നത് പ്രോജക്റ്റ് നിർവ്വഹണം ഗണ്യമായി മന്ദഗതിയിലാക്കാൻ കാരണമാകും - ഇവന്റുകൾ ഉപയോഗിക്കുന്നത് ഇത് കൂടുതൽ ഫലപ്രദമായി ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

പ്രോജക്റ്റ് ഫ്ലോ വിഭജിക്കാൻ ഈ ഓപ്ഷൻ ഇവന്റുകൾ ഉപയോഗിക്കുന്നു. ഇത് ഫോറെവർ ലൂപ്പ് ഉപയോഗിക്കുന്നതിന് സമാനമാണ്, പക്ഷേ കോഡ് കൂടുതൽ ചിട്ടപ്പെടുത്താൻ അനുവദിക്കുന്നു, അതുവഴി ബട്ടൺ എക്സിക്യൂഷന് വേഗത്തിലുള്ള പ്രതികരണ സമയം ലഭിക്കും. വേഗതയേറിയ പ്രതികരണ സമയം എന്നതിനർത്ഥം കൺട്രോളർ ബട്ടണുകൾ അമർത്തുന്നതിനും റോബോട്ട് സ്വഭാവം കാണുന്നതിനും ഇടയിൽ ഒരു കാലതാമസവും നിങ്ങൾ കാണില്ല എന്നാണ്. ഈ ഉദാഹരണം മുമ്പത്തെ പ്രോജക്റ്റിന്റെ അതേ പെരുമാറ്റരീതികൾ കാണിക്കുന്നു, പക്ഷേ ഫോറെവർ ലൂപ്പിന് പകരം ഇവന്റുകൾ ഉപയോഗിച്ചാണ് ഇത് ചെയ്യുന്നത്.

ഓപ്ഷൻ 3 ബ്ലോക്ക് പ്രോജക്റ്റ് തുറന്ന VEXcode EXP വർക്ക്‌സ്‌പെയ്‌സ്. ഈ പ്രോജക്റ്റിൽ 11 ചെറിയ ബ്ലോക്കുകളുടെ സ്റ്റാക്കുകൾ ഉണ്ട്, കൂടാതെ കോൺഫിഗർ ചെയ്ത ഉപകരണങ്ങളും ഇതിൽ ഉണ്ട്. ഡിവൈസസ് മെനു വശത്തേക്ക് തുറന്ന് ഇനിപ്പറയുന്ന ഉപകരണങ്ങൾ ലിസ്റ്റ് ചെയ്യുന്നു: കൺട്രോളർ1, പോർട്ട് 3-ൽ ClawMotor, പോർട്ട് 8-ൽ ആംമോട്ടർ, പോർട്ട് 1-ൽ ലെഫ്റ്റ്മോട്ടർ, പോർട്ട് 10-ൽ റൈറ്റ്മോട്ടർ. കൺട്രോളർ ഇൻപുട്ട് കൈകാര്യം ചെയ്യുന്ന 11 ചെറിയ ബ്ലോക്കുകളുടെ സ്റ്റാക്കുകൾ വർക്ക്‌സ്‌പെയ്‌സിൽ ഉണ്ട്. ആദ്യത്തെ സ്റ്റാക്ക് 'When started, ArmMotor stopping' എന്നത് 'hold' ആക്കി സജ്ജീകരിക്കുക, തുടർന്ന് 'ClawMotor stopping' എന്നത് 'hold' ആക്കി സജ്ജീകരിക്കുക എന്നതാണ്. രണ്ടാമത്തെ സ്റ്റാക്ക് 'കൺട്രോളർ1 ആക്സിസ് 3 മാറിയപ്പോൾ, ലെഫ്റ്റ് മോട്ടോർ പ്രവേഗം കൺട്രോളർ1 3 സ്ഥാനം % ആയി സജ്ജമാക്കുക' എന്ന് വായിക്കുന്നു, തുടർന്ന് ലെഫ്റ്റ് മോട്ടോർ മുന്നോട്ട് കറക്കുക. മൂന്നാമത്തെ സ്റ്റാക്ക് 'കൺട്രോളർ1 ആക്സിസ് 2 മാറിയപ്പോൾ, റൈറ്റ്‌മോട്ടർ പ്രവേഗം കൺട്രോളർ1 2 സ്ഥാനത്തേക്ക് % ആയി സജ്ജമാക്കുക' എന്ന് വായിക്കുന്നു, തുടർന്ന് റൈറ്റ്‌മോട്ടർ മുന്നോട്ട് കറക്കുക. നാലാമത്തെ സ്റ്റാക്കിൽ 'കൺട്രോളർ1 ബട്ടൺ അപ്പ് അമർത്തുമ്പോൾ, ആംമോട്ടർ മുകളിലേക്ക് സ്പിൻ ചെയ്യുക' എന്ന് എഴുതിയിരിക്കുന്നു. അഞ്ചാമത്തെ സ്റ്റാക്കിൽ "കൺട്രോളർ1 ബട്ടൺ അപ്പ് റിലീസ് ചെയ്യുമ്പോൾ, ആംമോട്ടർ നിർത്തുക" എന്ന് എഴുതിയിരിക്കുന്നു. ആറാമത്തെ സ്റ്റാക്കിൽ "കൺട്രോളർ1 ബട്ടൺ താഴേക്ക് അമർത്തുമ്പോൾ, ആംമോട്ടർ താഴേക്ക് സ്പിൻ ചെയ്യുക" എന്ന് എഴുതിയിരിക്കുന്നു. ഏഴാമത്തെ സ്റ്റാക്കിൽ "കൺട്രോളർ1 ബട്ടൺ താഴേക്ക് റിലീസ് ചെയ്യുമ്പോൾ, ആംമോട്ടർ നിർത്തുക" എന്ന് എഴുതിയിരിക്കുന്നു. എട്ടാമത്തെ സ്റ്റാക്കിൽ 'കൺട്രോളർ1 ബട്ടൺ എ അമർത്തുമ്പോൾ, ClawMotor തുറക്കുക' എന്ന് എഴുതിയിരിക്കുന്നു. ഒൻപതാമത്തെ സ്റ്റാക്കിൽ "കൺട്രോളർ1 ബട്ടൺ എ റിലീസ് ചെയ്യുമ്പോൾ, ClawMotor നിർത്തുക" എന്ന് എഴുതിയിരിക്കുന്നു. പത്താമത്തെ സ്റ്റാക്ക് "കൺട്രോളർ1 ബട്ടൺ ബി അമർത്തിയാൽ, ക്ലോമോട്ടർ അടയ്ക്കുക" എന്ന് കാണിക്കുന്നു. പതിനൊന്നാമത്തെയും അവസാനത്തെയും സ്റ്റാക്ക് "കൺട്രോളർ1 ബട്ടൺ ബി റിലീസ് ചെയ്യുമ്പോൾ, ClawMotor നിർത്തുക" എന്ന് പറയുന്നു.

"ഓപ്ഷൻ 3" VEXcode V5 പ്രോജക്റ്റ് ഫയൽ >ഡൗൺലോഡ് ചെയ്യുക.

ഓപ്ഷൻ 3 കോഡിന്റെ വിശദീകരണം.

കോഡ് പീസ് വിശദീകരണം
ഓപ്ഷൻ 3 VEXcode V5 പ്രോജക്റ്റിലെ ഒരു സ്റ്റാക്ക് ബ്ലോക്കുകളുടെ ക്ലോസ് അപ്പ്. സ്റ്റാക്ക് 'When started, ArmMotor stopping' എന്നത് 'hold' ആയും 'ClawMotor stopping' എന്നത് 'hold' ആയും സജ്ജീകരിക്കുന്നു.
ഈ കോഡ് ഉദാഹരണത്തിന് ഒരു Clawbot ഉപയോഗിച്ചു. കൺട്രോളറിലെ ബട്ടണുകൾ ഉപയോഗിച്ച് കൈ ഉയർത്തുകയും താഴ്ത്തുകയും ചെയ്യുമ്പോൾ, ബട്ടൺ റിലീസ് ചെയ്യുമ്പോൾ, ഗുരുത്വാകർഷണം കാരണം കൈ താഴേക്ക് വീഴും. കൺട്രോളറിലെ ബട്ടണുകൾ റിലീസ് ചെയ്തതിനു ശേഷവും കൈയും നഖവും "പിടിക്കാൻ" സജ്ജമാക്കുന്നത്, രണ്ടും സ്ഥാനത്ത് തുടരുമെന്ന് ഉറപ്പാക്കും.
ഓപ്ഷൻ 3 VEXcode V5 പ്രോജക്റ്റിലെ രണ്ട് സ്റ്റാക്ക് ബ്ലോക്കുകളുടെ ക്ലോസ് അപ്പ്. ആദ്യത്തെ സ്റ്റാക്ക് 'കൺട്രോളർ1 ആക്സിസ് 3 മാറിയപ്പോൾ, ലെഫ്റ്റ്മോട്ടർ പ്രവേഗം കൺട്രോളർ1 3 സ്ഥാനം % ആയി സജ്ജമാക്കുക' എന്ന് വായിക്കുന്നു, തുടർന്ന് ലെഫ്റ്റ്മോട്ടർ മുന്നോട്ട് കറക്കുക. രണ്ടാമത്തെ സ്റ്റാക്ക് 'കൺട്രോളർ1 ആക്സിസ് 2 മാറിയപ്പോൾ, റൈറ്റ്‌മോട്ടർ പ്രവേഗം കൺട്രോളർ1 2 സ്ഥാനത്തേക്ക് % ആയി സജ്ജമാക്കുക' എന്ന് വായിക്കുന്നു, തുടർന്ന് റൈറ്റ്‌മോട്ടർ മുന്നോട്ട് കറക്കുക.

 

ബട്ടൺ ലേഔട്ട് ദൃശ്യവൽക്കരിക്കുന്നതിനുള്ള V5 കൺട്രോളർ.

ഈ കോഡ് ഉദാഹരണത്തിന് ഒരു Clawbot ഉപയോഗിച്ചു. കൺട്രോളറിലെ ബട്ടണുകൾ ഉപയോഗിച്ച് കൈ ഉയർത്തുകയും താഴ്ത്തുകയും ചെയ്യുമ്പോൾ, ബട്ടൺ റിലീസ് ചെയ്യുമ്പോൾ, ഗുരുത്വാകർഷണം കാരണം കൈ താഴേക്ക് വീഴും. കൺട്രോളറിലെ ബട്ടണുകൾ റിലീസ് ചെയ്തതിനു ശേഷവും കൈയും നഖവും "പിടിക്കാൻ" സജ്ജമാക്കുന്നത്, രണ്ടും സ്ഥാനത്ത് തുടരുമെന്ന് ഉറപ്പാക്കും.

ജോയ്‌സ്റ്റിക്കുകൾ ഉപയോഗിച്ച് കൺട്രോളറിലെ നാല് അക്ഷങ്ങളിൽ ഒന്ന് മാറ്റുമ്പോൾ ചില പെരുമാറ്റങ്ങൾ ട്രിഗർ ചെയ്യാൻ {When controller axis} ഇവന്റ് ബ്ലോക്കുകൾ ഉപയോഗിക്കുന്നു.

[മോട്ടോർ പ്രവേഗം സജ്ജമാക്കുക] ബ്ലോക്കുകൾ മോട്ടോർ പ്രവേഗം A, D അക്ഷങ്ങളിൽ നിലവിലെ കൺട്രോളറിന്റെ സ്ഥാനത്തേക്ക് സജ്ജമാക്കാൻ ഉപയോഗിക്കുന്നു. ഇത് ഒരു കാർ ഡ്രൈവ് ചെയ്യാൻ സജ്ജമാക്കുന്നതിന് തുല്യമാണ്. അത് കാറിനെ ചലിപ്പിക്കണമെന്നില്ല, മറിച്ച് അത് നേരെയാക്കുക മാത്രമാണ് ചെയ്യുന്നത്.

ഓരോ ജോയിസ്റ്റിക്ക് അച്ചുതണ്ടും -100 നും +100 നും ഇടയിലുള്ള ഒരു മൂല്യം നൽകുന്നു, കേന്ദ്രീകരിക്കുമ്പോൾ പൂജ്യം മൂല്യം നൽകുന്നു. ഇതിനർത്ഥം ജോയിസ്റ്റിക്ക് അക്ഷങ്ങൾ തള്ളുമ്പോൾ -100% മുതൽ 100% വരെ തുല്യമാണ് എന്നാണ്. 100 അല്ലെങ്കിൽ -100 ലേക്ക് അച്ചുതണ്ടുകൾ കൂടുതൽ തള്ളപ്പെടുന്തോറും മോട്ടോർ വേഗത്തിൽ കറങ്ങും.

[സ്പിൻ] ബ്ലോക്ക് പിന്നീട് മോട്ടോർ ചലിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. ദിശ സജ്ജീകരിച്ചുകഴിഞ്ഞാൽ കാറിൽ ഗ്യാസ് അമർത്തുന്നതിന് തുല്യമാണിത്. ഇത് ഓരോ മോട്ടോറിനെയും നാല് കൺട്രോളർ അക്ഷങ്ങളിൽ ഒന്ന് ഉപയോഗിച്ച് നിയന്ത്രിക്കാൻ അനുവദിക്കുന്നു. 

ഓപ്ഷൻ 3 VEXcode V5 പ്രോജക്റ്റിലെ നാല് സ്റ്റാക്ക് ബ്ലോക്കുകളുടെ ക്ലോസ് അപ്പ്. ആദ്യത്തെ സ്റ്റാക്ക് "കൺട്രോളർ1 ബട്ടൺ അപ്പ് അമർത്തുമ്പോൾ, ആംമോട്ടർ മുകളിലേക്ക് സ്പിൻ ചെയ്യുക" എന്ന് പറയുന്നു. രണ്ടാമത്തെ സ്റ്റാക്കിൽ "കൺട്രോളർ1 ബട്ടൺ അപ്പ് റിലീസ് ചെയ്യുമ്പോൾ, ആംമോട്ടർ നിർത്തുക" എന്ന് എഴുതിയിരിക്കുന്നു. മൂന്നാമത്തെ സ്റ്റാക്ക് "കൺട്രോളർ1 ബട്ടൺ താഴേക്ക് അമർത്തുമ്പോൾ, ആംമോട്ടർ താഴേക്ക് സ്പിൻ ചെയ്യുക" എന്ന് പറയുന്നു. നാലാമത്തെ സ്റ്റാക്കിൽ "കൺട്രോളർ1 ബട്ടൺ താഴേക്ക് റിലീസ് ചെയ്യുമ്പോൾ, ആംമോട്ടർ നിർത്തുക" എന്ന് എഴുതിയിരിക്കുന്നു.

 

ഈ കോഡ് ഉദാഹരണത്തിന് ഒരു Clawbot ഉപയോഗിച്ചു. കൺട്രോളറിലെ ബട്ടണുകൾ ഉപയോഗിച്ച് കൈ ഉയർത്തുകയും താഴ്ത്തുകയും ചെയ്യുമ്പോൾ, ബട്ടൺ റിലീസ് ചെയ്യുമ്പോൾ, ഗുരുത്വാകർഷണം കാരണം കൈ താഴേക്ക് വീഴും. കൺട്രോളറിലെ ബട്ടണുകൾ റിലീസ് ചെയ്തതിനു ശേഷവും കൈയും നഖവും "പിടിക്കാൻ" സജ്ജമാക്കുന്നത്, രണ്ടും സ്ഥാനത്ത് തുടരുമെന്ന് ഉറപ്പാക്കും.

കൺട്രോളറിൽ അമർത്തുന്നതോ റിലീസ് ചെയ്യുന്നതോ ആയ ബട്ടണുകളിലേക്ക് ചില പെരുമാറ്റങ്ങളെ മാപ്പ് ചെയ്യാൻ {When controller axis} ഇവന്റ് ബ്ലോക്കുകൾ ഉപയോഗിക്കുന്നു. ഈ കോഡ് വിഭാഗത്തിൽ, മുകളിലേക്കോ താഴേക്കോ ബട്ടണുകൾ അമർത്തിയാൽ വ്യവസ്ഥകൾ സജ്ജീകരിച്ചിരിക്കുന്നു. അങ്ങനെയാണെങ്കിൽ, കൈ ഉയർത്തുക, താഴ്ത്തുക, അല്ലെങ്കിൽ നിർത്തുക തുടങ്ങിയ ചില പെരുമാറ്റങ്ങൾ സംഭവിക്കും.

ക്ലോവിനുള്ള പ്രോജക്റ്റിലെ കോഡിന്റെ അവസാന ഭാഗം ഇതേ വിശദീകരണം പിന്തുടരുന്നുവെന്ന് ശ്രദ്ധിക്കുക.

ഓപ്ഷൻ 3 ന്റെ സംഗ്രഹം: ഇവന്റുകൾ ഉപയോഗിക്കുന്നു

പ്രയോജനങ്ങൾ പരിമിതികൾ ഉദാഹരണ സാഹചര്യം
  • ഇഷ്ടാനുസൃത ബിൽഡുകൾ, പ്രത്യേകിച്ച് 4-ൽ കൂടുതൽ മോട്ടോറുകളുള്ള ഡ്രൈവ്‌ട്രെയിനുകൾ എന്നിവ ഉൾക്കൊള്ളാൻ കഴിയും.
  • ഒരൊറ്റ ബട്ടണിലേക്ക് ഒന്നിലധികം പെരുമാറ്റങ്ങൾ നൽകാം
  • കൺട്രോളറിലെ വ്യത്യസ്ത അക്ഷങ്ങളിലേക്ക് പെരുമാറ്റങ്ങൾ നിയോഗിക്കാൻ കഴിയും (ഉപകരണ കോൺഫിഗറേഷനിലെ ലെഫ്റ്റ് ആർക്കേഡ്, റൈറ്റ് ആർക്കേഡ്, സ്പ്ലിറ്റ് ആർക്കേഡ്, ടാങ്ക് ഡ്രൈവ് എന്നിവയുടെ ഏക ഓപ്ഷനുകൾക്ക് വിരുദ്ധമായി)
  • വേഗത്തിലുള്ള കോഡ് നിർവ്വഹണവും അതുവഴി ബട്ടൺ പ്രതികരണശേഷിയും (ഓരോ കണ്ടീഷനും വെവ്വേറെ വിളിക്കപ്പെടുന്നതിനാൽ, ഒരു കോഡ് സ്റ്റാക്കിൽ ഉൾച്ചേർക്കുന്നില്ല)
  • ഓപ്ഷനുകളെക്കുറിച്ചുള്ള ഏറ്റവും മികച്ച കോഡിംഗ് പരിജ്ഞാനം (കണ്ടീഷണലുകൾ, ലൂപ്പുകൾ, ഇവന്റുകൾ, കൺട്രോളറിലെ ബട്ടണുകൾ/ജോയ്സ്റ്റിക്കുകൾ എന്നിവയെക്കുറിച്ചുള്ള അറിവ്) ആവശ്യമാണ്.
  • ഒരു ഇഷ്ടാനുസൃതമായി നിർമ്മിച്ച റോബോട്ടിനൊപ്പം, പ്രത്യേകിച്ച് നിലവാരമില്ലാത്ത ഡ്രൈവ്‌ട്രെയിനിൽ, കൺട്രോളർ ഉപയോഗിക്കുന്നത്
  • കാലതാമസമില്ലാതെ ഒരൊറ്റ ബട്ടണിലേക്ക് ഒന്നിലധികം പെരുമാറ്റങ്ങൾ നിയോഗിക്കാൻ ആഗ്രഹിക്കുമ്പോൾ. ഉദാഹരണത്തിന്, മുകളിലേക്കുള്ള ബട്ടൺ അമർത്തുമ്പോൾ, നഖത്തിന് ഒരു വസ്തുവിന് ചുറ്റും തുറക്കാനും മുന്നോട്ട് നീങ്ങാനും അടയ്ക്കാനും കഴിയും.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: