VEXcode IQ ішіндегі реттелетін контроллер коды

Контроллерді пайдалану тапсырманы орындау үшін роботты басқаруды және жылжытуды жеңілдетеді. Дегенмен, Drive бағдарламасын пайдалануда шектеулер бар және робот құрастыруыңызға немесе орындалатын тапсырмаға байланысты әртүрлі басқару элементтері қажет болуы мүмкін. Контроллерді кодтау контроллерді роботқа және тапсырмаға жақсырақ сәйкестендіру үшін оңтайландыруға мүмкіндік береді. VEXcode IQ жүйесінде контроллерді кодтаудың бірнеше жолы бар. Әрқайсысының артықшылықтары мен шектеулері бар, ал кейбір әдістер қалаған нәтижеге байланысты белгілі бір жағдайларға жақсырақ сәйкес келеді.

Бұл мақала сізге контроллерді VEXcode IQ жүйесінде теңшелетін кодтаудың үш түрлі нұсқасымен таныстырады. Әрбір әдіс оның артықшылықтарымен, шектеулерімен және әдісті таңдау кезінде нұсқау беруге көмектесетін мысалды пайдалану жағдайымен сипатталады. Осы мақаланың мақсаттары үшін көрсетілген барлық код мысалдары Clawbot үшін жасалған. Дегенмен, бірдей ұғымдарды builds.vex.comсайтында табылған көптеген басқа құрылымдарға және реттелетін құрылымдарға қолдануға болады.

1-опция: Құрылғы конфигурациясында түймелерді тағайындау

Бұл опция BaseBot немесе Clawbot сияқты стандартты құрастыруды пайдаланған кезде және тез тұрып, іске қосқыңыз келсе тамаша.

Бұл опция құрылғы конфигурациясындағы контроллердегі түймелерге қозғалтқыштарды, жетекті немесе мотор топтарын тағайындауға мүмкіндік береді. Құрылғы конфигурациясында контроллерге түймелерді тағайындау жолы туралы қосымша ақпарат алу үшін осы мақаланы қараңыз.

Контроллер опциялары көрсетілген VEXcode IQ құрылғылары мәзірі. Түймелерді басқару схемасы екі джойстиктің роботты резервуар жетек конфигурациясында басқаратынын көрсетеді. E осінің түймелері ArmMotorGroup тобын басқарады, ал R осінің түймелері ClawMotorды басқарады.

1-опцияның қысқаша мазмұны: Құрылғы конфигурациясында түймелерді тағайындау

Артықшылықтары

Шектеулер

Мысал жағдай

  • Кодтауды қажет етпейтін жылдам орнату
  • Ең қарапайым әдіс
  • Оңай реттеледі
  • Түймелерге жеке қозғалтқыштарды, стандартты жетекті және мотор топтарын тағайындай алады
  • Түймелерді тағайындау контроллердегі түймелер санымен шектеледі
  • Қозғалтқыш 4 қозғалтқыштан аспауы немесе реттелуі мүмкін емес (тек стандартты жетекке қолдау көрсетіледі, H дискісіне, голономикалық немесе басқа реттелетін жетекке емес)
  • BaseBot, Clawbot сияқты стандартты құрылымды басқару немесе сол стандартты құрылымдардың қарапайым модификациясы. Мысалы, қозғалтқыш тобымен басқарылатын алдыңғы жағына бекітілген кірісі бар BaseBot.
  • Қай түймелер роботтағы әртүрлі әрекеттерге сәйкес келетінін көп кодтаусыз жылдам басқару

2-нұсқа: Forever циклін пайдалану

Егер стандартты құрастырудың орнына реттелетін құрастыруды пайдалансаңыз немесе контроллерде көбірек теңшеу мүмкіндігін алғыңыз келсе, бұл опция жақсы. Forever циклін пайдалану контроллер үшін теңшелетін кодты жасауға тамаша кіріспе болып табылады.

Бұл опция Controller үшін барлық шарттарды және онымен байланысты түймелерді Forever циклінде орналастырады. Бұл әсіресе реттелетін құрастыру конструкцияларында көбірек икемділікті қамтамасыз етеді, бірақ сонымен бірге кейбір кодтау тәжірибесін қажет етеді. Дегенмен, бұл опцияны пайдаланған кезде ескерілетін мәселе - жобаңыздың ұзақтығы мен күрделілігі. Неғұрлым көп шарттар қосылса, код стек соғұрлым ұзағырақ болуы мүмкін. Бұл бірнеше блоктарды ретімен орындау керек дегенді білдіреді, ал блоктар көп болған кезде бұл жобаның орындалуын баяулатуы мүмкін. Жобаның баяу орындалуы Controller түймелерін басу мен робот әрекетін көру арасында кідіріс тудыруы мүмкін.

Төменде көрсетілген нақты мысал роботты басқару және нысандармен әрекеттесу үшін тырнақ пен қолды басқару үшін теңшелетін дизайн роботымен (мысалы, реттелетін жетектері бар робот) Forever циклін пайдаланудың бір жолы болып табылады.

2-опция блоктары жобасымен VEXcode IQ жұмыс кеңістігі ашылды. Жобада блоктар жинағы бар және оның конфигурацияланған құрылғылары бар. Құрылғылар мәзірі бүйірде ашылады және келесі құрылғыларды тізімдейді: IQ 2-гендік ми, 4-портта ClawMotor, 10-портта ArmMotor, Controller, 1-портта LeftMotor және 6-портта RightMotor. Соңында контроллердің кірісін өңдеуге арналған блоктар жинағы бар. Стек Іске қосылғанда, ArmMotor тоқтатуды ұстап тұруға және ClawMotor тоқтатуды ұстауға орнатуды көрсетеді. Стектің қалған бөлігі Forever циклінде қамтылған. Ол «Мәңгі» деп оқиды, LeftMotor жылдамдығын Контроллер A позициясына % орнатыңыз, LeftMotor жылдамдығын Контроллер D күйіне % айналдырыңыз және RightMotor алға айналдырыңыз. Әрі қарай, егер контроллер E Жоғары басылса, ArmMotor жоғары бұраңыз, егер контроллер E Төмен басылса, ArmMotor төмен айналдырыңыз, әйтпесе ArmMotor тоқтатылады. Соңында, егер контроллер F жоғары басылса, ClawMotor ашылады, ал егер F контроллері төмен басылса, ClawMotor жабыңыз, ал басқаша ClawMotor тоқтатылады.

"2-нұсқа" VEXcode IQ (2-буын) жоба файлын жүктеп алыңыз >

ескертпе: 1-ші буын Clawbot пайдаланылса, жоғарыдағы жобада көзделгендей жұмыс істеу үшін қол моторын Құрылғы конфигурациясында кері бұру қажет болады.

2-нұсқа кодының түсіндірмесі.

Код бөлігі

Түсіндіру

2-нұсқа VEXcode IQ жобасындағы блоктар дестесін жабыңыз. Екі блок бөлектелген және стектің Forever циклінің сыртында, олар ArmMotor тоқтату параметрін ұстап тұруға және ClawMotor тоқтатуды ұстап тұруға орнатуды оқиды.

Бұл код мысалы үшін Clawbot пайдаланылды. Контроллердегі түймелер қолды көтеру және түсіру үшін пайдаланылған кезде, түйме босатылған бойда, ауырлық күшінің әсерінен қол қайтадан төмен түседі. Қолды да, тырнақты да «ұстауға» орнату, контроллердегі түймелер босатылғаннан кейін де қол мен тырнақтың екеуі де орнында қалуын қамтамасыз етеді.

2-нұсқа VEXcode IQ жобасындағы блоктар дестесін жабыңыз. Стектің Forever циклінің ішінде төрт блок бөлектелген. Олар мәңгі оқиды, LeftMotor жылдамдығын Контроллер A позициясына % орнатыңыз, LeftMotorды алға айналдырыңыз, RightMotor жылдамдығын Controller D күйіне % орнатыңыз және RightMotor алға айналдырыңыз. IQ (2-ші буын) контроллерінің диаграммасы, оның түймелері мен джойстиктері белгіленген. Көрініс контроллердің алдыңғы жағынан. Сол жақ джойстиктің осьтері A және B деп белгіленген. Сол жақ джойстиктің ортаңғы түймесі L3 деп белгіленген. Сол жақ джойстиктің астындағы екі дөңгелек түймелер E Жоғары және E Төмен деп белгіленген. Оң жақ джойстиктің осьтері C және D деп белгіленген. Оң жақ джойстиктің орталық түймешігі R3 деп белгіленген. Оң жақ джойстиктің астындағы екі дөңгелек түймелер F жоғары және F төмен деп белгіленген.

Бұл код мысалы үшін Clawbot пайдаланылды. Контроллердегі түймелер қолды көтеру және түсіру үшін пайдаланылған кезде, түйме босатылған бойда, ауырлық күшінің әсерінен қол қайтадан төмен түседі. Қолды да, тырнақты да «ұстауға» орнату, контроллердегі түймелер босатылғаннан кейін де қол мен тырнақтың екеуі де орнында қалуын қамтамасыз етеді.

Forever циклі контроллерде қандай түймелердің басылып жатқанын үздіксіз тексеру үшін пайдаланылады.

[Motor жылдамдығын орнату] блоктары қозғалтқыш жылдамдығын A және D осі бойынша ағымдағы контроллердің орнына орнату үшін пайдаланылады. Бұл көлікті жетекте орнатумен бірдей. Бұл міндетті түрде көлікті қозғалтпайды, ол жай ғана орнатады.

Әрбір джойстик осі -100-ден +100-ге дейінгі мәнді қайтарады және ортаға қойылғанда нөлдік мәнді қайтарады. Бұл джойстик осьтері итерілген кезде -100% пен 100% тең болады дегенді білдіреді. 100 немесе -100-ге қарай осьтер неғұрлым алыс итерілсе, қозғалтқыш соғұрлым тезірек айналады.

Содан кейін [Айналдыру] блогы қозғалтқышты нақты жылжыту үшін пайдаланылады. Бұл бағыт орнатылғаннан кейін көлікке газды басқанмен бірдей. Бұл әрбір қозғалтқышты төрт контроллер осінің бірімен басқаруға мүмкіндік береді.

2-нұсқа VEXcode IQ жобасындағы блоктар дестесін жабыңыз. Стектің Forever циклінің ішінде if, else if, else блогы бөлектеледі. Ол E Controller Up басылғанын, содан кейін ArmMotorды жоғары бұраңыз, ал егер контроллер E Төмен басылса, ArmMotorды төмен айналдырыңыз, әйтпесе ArmMotor тоқтатылады.

Бұл код мысалы үшін Clawbot пайдаланылды. Контроллердегі түймелер қолды көтеру және түсіру үшін пайдаланылған кезде, түйме босатылған бойда, ауырлық күшінің әсерінен қол қайтадан төмен түседі. Қолды да, тырнақты да «ұстауға» орнату, контроллердегі түймелер босатылғаннан кейін де қол мен тырнақтың екеуі де орнында қалуын қамтамасыз етеді.

Контроллерде басылатын немесе босатылатын түймелермен белгілі бір әрекеттерді салыстыру үшін [Егер, әйтпесе, басқа болса] блогы пайдаланылады. Кодтың осы бөлімінде E Жоғары немесе E Төмен түймелері басылған жағдайда орнатылған шарттар. Олай болса, қолды көтеру және түсіру сияқты белгілі бір әрекеттер орын алады. Шарттың басқа бөлігі де бар, ешбір түйме басылмаса, қол қозғалуды тоқтатуға орнатылады.

Claw жобасындағы кодтың келесі бөлімі бірдей түсініктемеге сәйкес келетінін ескеріңіз.

2-нұсқаның қысқаша мазмұны: Forever циклін пайдалану

Артықшылықтары

Шектеулер

Мысал жағдай

  • Арнайы конструкцияларды, әсіресе 4-тен астам қозғалтқышы бар жетектерді орналастыра алады
  • Бір түймеге бірнеше әрекетті тағайындай алады
  • Контроллердегі әртүрлі осьтерге мінез-құлықтарды тағайындай алады (құрылғы конфигурациясындағы сол жақ аркада, оң жақтағы аркада, бөлінген аркада және танк дискінің жалғыз опцияларынан айырмашылығы)
  • Кейбір кодтау білімін қажет етеді (шарттар, циклдар және контроллердегі түймелер/джойстиктер туралы білім)
  • Жобаның баяу орындалу мүмкіндігі немесе түйменің жауап беру уақытының артта қалуы. Барлық пәрмендер бір Forever циклінің ішінде болғандықтан, кодтың орындалуы орнатылған шарттарға және код ұзындығына байланысты баяу жұмыс істей алады.
  • Контроллерді арнайы құрастырылған роботпен, әсіресе стандартты емес жетекпен бірге пайдалану
  • Бір түймеге бірнеше әрекетті тағайындағыңыз келгенде. Мысалы, F Жоғары түймесі басылғанда, тырнақ нысанды ашуға, алға жылжытуға, содан кейін жабуға болады.

3-нұсқа: Оқиғаларды пайдалану

Контроллеріңізді көп теңшеуді қаласаңыз, Оқиғаларды пайдалану - сіз үшін ең жақсы нұсқа. Түймені бір рет басу тырнақты ашу, қолды көтеру және белгіленген қашықтыққа алға қарай жүру үшін түймені басу сияқты бірнеше робот әрекетін тудыруы мүмкін. Forever циклінде әр түйменің бірнеше әрекетін кодтауға әрекет жасау жобаның орындалуын күрт баяулатады – оқиғаларды пайдалану мұны тиімдірек орындауға мүмкіндік береді.

Бұл опция жоба ағынын бұзу үшін оқиғаларды пайдаланады. Бұл Forever циклін пайдалануға ұқсас, бірақ түймені орындау жылдамырақ жауап беру уақытына ие болу үшін кодты ұйымдастыруға мүмкіндік береді. Жылдамырақ жауап беру уақыты контроллер түймелерін басу мен робот әрекетін көру арасындағы кешігуді көрмейсіз дегенді білдіреді. Бұл мысал алдыңғы жоба сияқты әрекеттерді көрсетеді, бірақ Мәңгі циклдің орнына Оқиғалар арқылы орындалады.

3-опция блоктары жобасымен VEXcode IQ жұмыс кеңістігі ашылды. Жобада блоктардың 11 шағын стектері және конфигурацияланған құрылғылары бар. Құрылғылар мәзірі бүйірде ашылады және келесі құрылғыларды тізімдейді: IQ 2-гендік ми, 4-портта ClawMotor, 10-портта ArmMotor, Controller, 1-портта LeftMotor және 6-портта RightMotor. Соңында Контроллер енгізуін өңдейтін блоктардың 11 шағын стектері бар. Бірінші стек Іске қосылғанда, ArmMotor тоқтату режимін ұстап тұруға орнатыңыз, содан кейін ClawMotor тоқтатуды ұстап тұруға орнатыңыз. Екінші стек Контроллер осі A өзгертілгенде, LeftMotor жылдамдығын Контроллер A күйіне % орнатыңыз, содан кейін LeftMotorды алға айналдырыңыз. Үшінші стек D контроллері өзгертілгенде, RightMotor жылдамдығын контроллер D % күйіне орнатыңыз, содан кейін RightMotorды алға айналдырыңыз. Төртінші стек Контроллер түймесі E Жоғары басылғанда, ArmMotorды жоғары айналдырыңыз. Бесінші стек Контроллер түймесі E Жоғары босатылған кезде ArmMotor жұмысын тоқтатады. Алтыншы стек Контроллер E түймесі Төмен басылғанда, ArmMotor төмен айналдырылады. Жетінші стек Контроллер түймесі E төмен босатылған кезде ArmMotor жұмысын тоқтатады. Сегізінші стек Контроллер түймесі F Жоғары басылғанда, ClawMotor ашылады деп оқылады. Тоғызыншы стек контроллер F Жоғары түймесі босатылған кезде, ClawMotor жұмысын тоқтатады. Оныншы стек контроллер F түймесі төмен басылғанда, ClawMotor жабыңыз деп оқиды. Он бірінші және соңғы стек Контроллер F Төмен түймесі босатылған кезде, ClawMotor тоқтатылады.

"3-нұсқа" VEXcode IQ (2-буын) жоба файлын жүктеп алыңыз >

ескертпе: егер 1-ші буын Clawbot пайдаланылса, жоғарыдағы жобада көзделгендей жұмыс істеу үшін қол моторын Құрылғы конфигурациясында кері бұру қажет болады.

3-нұсқа кодының түсіндірмесі.

Код бөлігі

Түсіндіру

3-нұсқа VEXcode IQ жобасында блоктардың бір дестесін жабыңыз. Стек Іске қосылғанда, ArmMotor тоқтату режимін ұстап тұруға орнатыңыз, содан кейін ClawMotor тоқтатуды ұстап тұруға орнатыңыз.

Бұл код мысалы үшін Clawbot пайдаланылды. Контроллердегі түймелер қолды көтеру және түсіру үшін пайдаланылған кезде, түйме босатылған бойда, ауырлық күшінің әсерінен қол қайтадан төмен түседі. Қолды да, тырнақты да «ұстауға» орнату, контроллердегі түймелер босатылғаннан кейін де қол мен тырнақтың екеуі де орнында қалуын қамтамасыз етеді.

3-нұсқа VEXcode IQ жобасында блоктардың екі дестесін жабыңыз. Бірінші стек Контроллер осі A өзгертілгенде, сол қозғалтқыш жылдамдығын Контроллер A күйіне % орнатыңыз, содан кейін LeftMotorды алға айналдырыңыз. Екінші стек контроллер осі D өзгертілгенде, RightMotor жылдамдығын контроллер D % күйіне орнатыңыз, содан кейін RightMotorды алға айналдырыңыз. IQ (2-ші буын) контроллерінің диаграммасы, оның түймелері мен джойстиктері белгіленген. Көрініс контроллердің алдыңғы жағынан. Сол жақ джойстиктің осьтері A және B деп белгіленген. Сол жақ джойстиктің ортаңғы түймесі L3 деп белгіленген. Сол жақ джойстиктің астындағы екі дөңгелек түймелер E Жоғары және E Төмен деп белгіленген. Оң жақ джойстиктің осьтері C және D деп белгіленген. Оң жақ джойстиктің орталық түймесі R3 деп белгіленген. Оң жақ джойстиктің астындағы екі дөңгелек түймелер F Жоғары және F Төмен деп белгіленген.

Бұл код мысалы үшін Clawbot пайдаланылды. Контроллердегі түймелер қолды көтеру және түсіру үшін пайдаланылған кезде, түйме босатылған бойда, ауырлық күшінің әсерінен қол қайтадан төмен түседі. Қолды да, тырнақты да «ұстауға» орнату, контроллердегі түймелер босатылғаннан кейін де қол мен тырнақтың екеуі де орнында қалуын қамтамасыз етеді.

{When controller axis} Оқиға блоктары контроллердегі төрт осьтің бірі джойстиктер арқылы өзгертілген кезде белгілі бір әрекеттерді іске қосу үшін пайдаланылады.

[Motor жылдамдығын орнату] блоктары қозғалтқыш жылдамдығын A және D осі бойынша ағымдағы контроллердің орнына орнату үшін пайдаланылады. Бұл көлікті жетекте орнатумен бірдей. Бұл міндетті түрде көлікті қозғалтпайды, ол жай ғана орнатады.

Әрбір джойстик осі -100-ден +100-ге дейінгі мәнді қайтарады және ортаға қойылғанда нөлдік мәнді қайтарады. Бұл джойстик осьтері итерілген кезде -100% пен 100% тең болады дегенді білдіреді. 100 немесе -100-ге қарай осьтер неғұрлым алыс итерілсе, қозғалтқыш соғұрлым тезірек айналады.

Содан кейін [Айналдыру] блогы қозғалтқышты нақты жылжыту үшін пайдаланылады. Бұл бағыт орнатылғаннан кейін көлікке газды басқанмен бірдей. Бұл әрбір қозғалтқышты төрт контроллер осінің бірімен басқаруға мүмкіндік береді.

3-нұсқа VEXcode IQ жобасында төрт блок стегін жабыңыз. Бірінші стек Контроллер түймесі E Жоғары басылғанда, ArmMotor жоғары бұраңыз. Екінші стек Контроллер түймесі E Жоғары босатылған кезде ArmMotor жұмысын тоқтатады. Үшінші стек Контроллер E түймесі Төмен басылғанда, ArmMotor төмен айналдырылады. Төртінші стек Контроллер түймесі E төмен босатылған кезде ArmMotor тоқтатылады.

Бұл код мысалы үшін Clawbot пайдаланылды. Контроллердегі түймелер қолды көтеру және түсіру үшін пайдаланылған кезде, түйме босатылған бойда, ауырлық күшінің әсерінен қол қайтадан төмен түседі. Қолды да, тырнақты да «ұстауға» орнату, контроллердегі түймелер босатылғаннан кейін де қол мен тырнақтың екеуі де орнында қалуын қамтамасыз етеді.

{When controller axis} Оқиға блоктары белгілі бір әрекеттерді контроллерде басылатын немесе босатылатын түймелерге салыстыру үшін пайдаланылады. Кодтың осы бөлімінде E Жоғары немесе E Төмен түймелері басылған жағдайда орнатылған шарттар. Олай болса, қолды көтеру, түсіру немесе тоқтату сияқты белгілі бір әрекеттер орын алады.

Claw жобасындағы кодтың соңғы бөлімі бірдей түсініктемеден кейін келетінін ескеріңіз.

3-нұсқаның қысқаша мазмұны: Оқиғаларды пайдалану

Артықшылықтары

Шектеулер

Мысал жағдай

  • Арнайы конструкцияларды, әсіресе 4-тен астам қозғалтқышы бар жетектерді орналастыра алады
  • Бір түймеге бірнеше әрекетті тағайындай алады
  • Контроллердегі әртүрлі осьтерге мінез-құлықтарды тағайындай алады (құрылғы конфигурациясындағы сол жақ аркада, оң жақтағы аркада, бөлінген аркада және танк дискінің жалғыз опцияларынан айырмашылығы)
  • Кодты жылдамырақ орындау және осылайша түймелердің жауап беру қабілеті (әрбір шарт бөлек шақырылады және кодтың бір дестесіне ендірілмейді)
  • Опциялар (шарттар, циклдар, оқиғалар және контроллердегі түймелер/джойстиктер туралы білім) туралы ең кодтау білімін талап етеді.
  • 1-буын VEX IQ миын пайдалансаңыз, жобада тым көп Оқиғалардың болуы Мидың өңдеу шектеулеріне байланысты жобаның іске қосылмауына әкелуі мүмкін.
  • Контроллерді арнайы құрастырылған роботпен, әсіресе стандартты емес жетекпен бірге пайдалану
  • Бір түймеге кешігусіз бірнеше әрекетті тағайындағыңыз келгенде. Мысалы, F Жоғары түймесі басылғанда, тырнақ нысанды ашуға, алға жылжытуға, содан кейін жабуға болады.

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

Last Updated: