Vlastní kód ovladače ve VEXcode V5

Použití ovladače může usnadnit řízení a přesun robota, aby dokončil úkol. Používání programu Drive však má svá omezení a v závislosti na stavbě vašeho robota nebo aktuální úloze můžete chtít různé ovládací prvky. Kódování ovladače vám umožňuje optimalizovat ovladač tak, aby lépe vyhovoval vašemu robotovi a danému úkolu. Existuje několik způsobů, jak kódovat ovladač ve VEXcode V5. Každá má své výhody a omezení a některé metody jsou pro určité situace vhodnější v závislosti na požadovaném výsledku.

Tento článek vás provede třemi různými možnostmi vlastního kódování ovladače ve VEXcode V5. Každá metoda bude popsána s jejími výhodami, omezeními a příkladem použití, který vám pomůže při výběru metody. Pro účely tohoto článku byly všechny ukázky kódu vytvořeny pro Clawbot. Stejné koncepty by však mohly být aplikovány na řadu dalších sestavení, která se nacházejí na builds.vex.com, a na vlastní sestavení.

Možnost 1: Přiřazení tlačítek v konfiguraci zařízení

Tato možnost je skvělá, když používáte standardní sestavení, jako je Speedbot nebo Clawbot, a chcete se rychle zprovoznit.

Tato možnost vám umožňuje přiřadit motory, hnací ústrojí nebo skupiny motorů tlačítkům na ovladači v konfiguraci zařízení. Další informace o tom, jak přiřadit tlačítka k ovladači v konfiguraci zařízení, naleznete v tomto článku.

Nabídka Zařízení VEXcode V5 se zobrazenými možnostmi řídicí jednotky. Schéma ovládání tlačítky ukazuje, že dva joysticky řídí robota v konfiguraci pohonu tanku. Tlačítka Nahoru a Dolů ovládají skupinu ArmMotorGroup a tlačítka osy R ovládají ClawMotor.

Shrnutí možnosti 1: Přiřazení tlačítek v konfiguraci zařízení

Výhody Omezení Příklad situace
  • Rychlé nastavení bez nutnosti kódování
  • Nejjednodušší metoda
  • Snadno nastavitelné
  • Tlačítkům lze přiřadit jednotlivé motory, standardní hnací ústrojí a skupiny motorů
  • Přiřazení tlačítek je omezeno počtem tlačítek na ovladači
  • Hnací ústrojí nesmí překročit 4 motory ani nemůže být přizpůsobeno (podporován je pouze standardní pohon, nikoli pohon H, holonomický nebo jiný vlastní pohon)
  • Manipulace se standardním sestavením, jako je Speedbot, Clawbot, nebo jednoduchá úprava těchto standardních sestavení. Například Speedbot se sáním připevněným vpředu ovládaným motorovou skupinou.
  • Rychlá manipulace s tlačítky, která odpovídají různému chování robota, bez velkého kódování

Možnost 2: Použití Forever Loop

Pokud místo standardního sestavení používáte vlastní sestavení nebo chcete mít v ovladači možnost více přizpůsobení, je tato možnost dobrá. Použití smyčky Forever je skvělý úvod k vytvoření vlastního kódu pro váš ovladač.

Tato možnost umístí všechny podmínky pro ovladač a jeho přidružená tlačítka do smyčky Forever. To poskytuje větší flexibilitu, zejména u vlastních návrhů sestavení, ale také vyžaduje určité zkušenosti s kódováním. Jednou z úvah při použití této možnosti je však délka a složitost vašeho projektu. Čím více podmínek je přidáno, tím delší může být zásobník kódů. To znamená, že musí být provedeno více bloků v daném pořadí, a když je bloků mnoho, může to zpomalit provádění projektu. Pomalejší provádění projektu může způsobit prodlevu mezi stisknutím tlačítek ovladače a sledováním chování robota.

Konkrétní příklad zobrazený níže je jedním ze způsobů, jak můžete použít smyčku Forever s robotem na zakázku (jako je robot s vlastním pohonem) k řízení robota a manipulaci s pařátem a paží za účelem interakce s předměty.

Pracovní prostor VEXcode V5 s otevřeným projektem bloků Option 2. Projekt má vrstvu bloků a nakonfigurovaná zařízení. Nabídka Zařízení se otevře na boku a obsahuje následující zařízení: Controller1, ClawMotor na portu 3, ArmMotor na portu 8, LeftMotor na portu 1 a RightMotor na portu 10. V pracovním prostoru se nachází zásobník bloků pro zpracování vstupů z regulátoru. Zásobník přečte: Při spuštění nastavte zastavení ArmMotor na pozastavení a zastavení ClawMotor na pozastavení. Zbytek zásobníku je obsažen ve smyčce Forever. Zobrazí se Navždy, nastavte rychlost levého motoru na pozici Controller1 3 %, otočte levý motor dopředu, nastavte rychlost pravého motoru na pozici Controller1 2 % a otočte pravý motor dopředu. Dále, pokud je stisknuto tlačítko Controller1 Up, otočte ArmMotor nahoru, jinak pokud je stisknuto tlačítko Controller1 Down, otočte ArmMotor dolů, jinak ArmMotor zastavte. Nakonec, pokud je stisknut Controller1 A, otočte ClawMotor do otevřeného stavu, jinak, pokud je stisknut Controller1 B, otočte ClawMotor do zavřeného stavu a ClawMotor se zastaví.

Stáhněte si soubor projektu VEXcode V5 "Option 2" >

Vysvětlení kódu možnosti 2.

Kus kódu Vysvětlení
Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode V5. Dva bloky jsou zvýrazněny a nacházejí se mimo smyčku Forever v zásobníku. Čtou, zda je pro ArmMotor zastavení nastaveno na hold, a zda je pro ClawMotor zastavení nastaveno na hold. Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.
Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode V5. Uvnitř smyčky Forever zásobníku jsou zvýrazněny čtyři bloky. Přečtou Navždy, nastaví rychlost levého motoru na pozici Controller1 3 %, roztočí levý motor dopředu, nastaví rychlost pravého motoru na pozici Controller1 2 % a roztočí pravý motor dopředu.

 

Ovladač V5 pro vizualizaci rozložení tlačítek.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

Smyčka Forever se používá pro nepřetržitou kontrolu, která tlačítka jsou na ovladači stisknuta.

Bloky [Set motor velocity] se používají k nastavení rychlosti motoru na aktuální pozici ovladače podél 2 a 3 os. To je ekvivalent k uvedení auta do jízdy. To nemusí nutně nutit auto do pohybu, jen to nastavuje.

Každá osa joysticku vrací hodnotu mezi -100 až +100 a při vystředění vrací hodnotu nula. To pak znamená, že osy joysticku, když jsou zatlačeny, se rovnají -100 % až 100 %. Čím dále směrem k 100 nebo -100 jsou osy posunuty, tím rychleji se motor bude točit.

Blok [Spin] se pak používá ke skutečnému pohybu motoru. To je ekvivalentní sešlápnutí plynu na autě, jakmile byl nastaven směr. To umožňuje, aby byl každý motor řízen jednou ze čtyř os ovladače. 

Detailní záběr na vrstvu bloků v projektu Option 2 VEXcode V5. Blok if, else if, else je zvýrazněn uvnitř smyčky Forever v zásobníku. Zobrazí se, že pokud je stisknuto tlačítko Controller1 nahoru, tak se ArmMotor otočí nahoru, jinak pokud je stisknuto tlačítko Controller1 dolů, tak se ArmMotor otočí dolů a jinak se ArmMotor zastaví.

 

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

Blok [If then else if then else] se používá k mapování určitého chování na tlačítka, která jsou stisknuta nebo uvolněna na ovladači. V této části kódu jsou nastaveny podmínky, zda jsou stisknuta tlačítka Nahoru nebo Dolů. Pokud ano, dojde k určitému chování, jako je zvedání a spouštění paže. Existuje také druhá část podmínky, pokud není stisknuto žádné tlačítko, rameno se zastaví.

Všimněte si, že následující část kódu v projektu pro Claw má stejné vysvětlení.

Shrnutí možnosti 2: Použití Forever Loop

Výhody Omezení Příklad situace
  • Může pojmout zakázkové sestavení, zejména hnací ústrojí s více než 4 motory
  • Jednomu tlačítku lze přiřadit více chování
  • Může přiřadit chování různým osám na ovladači (oproti jediným možnostem Levá arkáda, Pravá arkáda, Dělená arkáda a Tankový pohon v konfiguraci zařízení)
  • Vyžaduje určité znalosti kódování (podmínky, smyčky a znalost tlačítek/joysticků na ovladači)
  • Potenciál pro pomalejší provádění projektu nebo zpoždění v době odezvy tlačítka. Vzhledem k tomu, že všechny příkazy jsou obsaženy v jedné smyčce Forever, může provádění kódu probíhat pomalu v závislosti na nastavených podmínkách a délce kódu.
  • Použití ovladače s robotem vyrobeným na zakázku, zejména s nestandardním hnacím ústrojím
  • Když chcete jednomu tlačítku přiřadit více chování. Například, když je stisknuto tlačítko Nahoru, dráp se může otevřít, jet vpřed a pak se zavřít kolem předmětu.

Možnost 3: Použití událostí

Pokud chcete svůj ovladač hodně přizpůsobit, je pro vás použití událostí nejlepší volbou. Jedním stisknutím tlačítka lze spustit několik chování robota, jako je stisknutí tlačítka pro otevření drápu, zvednutí paže a jízda vpřed na nastavenou vzdálenost. Pokus o kódování více chování na tlačítko v rámci smyčky Forever by způsobil dramatické zpomalení provádění projektu – použití Events vám to umožní efektivněji.

Tato možnost používá Události k rozdělení toku projektu. Je to podobné jako při použití smyčky Forever, ale umožňuje to, aby byl kód organizovanější, takže spouštění tlačítka má rychlejší dobu odezvy. Rychlejší doba odezvy znamená, že neuvidíte prodlevu mezi stisknutím tlačítek ovladače a sledováním chování robota. Tento příklad ukazuje stejné chování jako předchozí projekt, ale provede se pomocí Events namísto Forever Loop.

Pracovní prostor VEXcode EXP s otevřeným projektem bloků Option 3. Projekt má 11 malých hromádek bloků a nakonfigurovaná zařízení. Nabídka Zařízení se otevře na boku a obsahuje následující zařízení: Controller1, ClawMotor na portu 3, ArmMotor na portu 8, LeftMotor na portu 1 a RightMotor na portu 10. V pracovním prostoru se nachází 11 malých hromádek bloků, které zpracovávají vstupy z Controlleru. První zásobník přečte „Při spuštění nastavte zastavení ArmMotor na pozastavení a poté nastavte zastavení ClawMotor na pozastavení“. Druhý zásobník čte: Když se změní osa 3 Controller1, nastavte rychlost levého motoru na pozici Controller1 3 % a poté otočte levým motorem dopředu. Třetí zásobník zní: Když se změní poloha osy 2 ovladače 1, nastavte rychlost pravého motoru na polohu ovladače 1 2 v % a poté otočte pravý motor dopředu. Čtvrtý zásobník zobrazuje zprávu „Když stisknete tlačítko Nahoru na ovladači1, otočíte ArmMotor nahoru“. Pátý zásobník zobrazuje stav „Když je tlačítko Nahoru na ovladači 1 uvolněno, zastaví se ArmMotor“. Šestý zásobník zobrazuje zprávu „Když stisknete tlačítko Controller1, otočte ArmMotor dolů“. Sedmý zásobník zobrazuje stav „Když je tlačítko Controller1 uvolněno, zastaví se ArmMotor“. Osmý zásobník zobrazuje zprávu: Když stisknete tlačítko A na ovladači1, roztočení ClawMotoru se otevře. Devátý zásobník zobrazuje zprávu „Po uvolnění tlačítka A na ovladači 1 se ClawMotor zastaví“. Desátý zásobník zobrazuje zprávu „Když je stisknuto tlačítko B na ovladači 1, otočení ClawMotoru se zavře“. Jedenáctý a poslední zásobník obsahuje zprávu: Po uvolnění tlačítka B na ovladači 1 se ClawMotor zastaví.

Stáhněte si soubor projektu VEXcode V5 "Option 3" >

Vysvětlení kódu možnosti 3.

Kus kódu Vysvětlení
Detailní záběr na jednu vrstvu bloků v projektu Option 3 VEXcode V5. Zásobník přečte: Při spuštění nastavte zastavení ArmMotor na pozastavení a poté nastavte zastavení ClawMotor na pozastavení.
Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.
Detailní záběr dvou hromádek bloků v projektu Option 3 VEXcode V5. První zásobník čte: Když se změní osa 3 Controller1, nastavte rychlost levého motoru na pozici Controller1 3 % a poté otočte levým motorem dopředu. Druhý zásobník zní: Když se změní poloha osy 2 ovladače 1, nastavte rychlost pravého motoru na pozici ovladače 1 2 v % a poté otočte pravý motor dopředu.

 

Ovladač V5 pro vizualizaci rozložení tlačítek.

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

{When controller axis} Bloky událostí se používají ke spuštění určitého chování, když se jedna ze čtyř os na ovladači změní pomocí joysticků.

Bloky [Set motor velocity] se používají k nastavení rychlosti motoru na aktuální pozici ovladače podél os A a D. To je ekvivalent k uvedení auta do jízdy. To nemusí nutně nutit auto do pohybu, jen to nastavuje.

Každá osa joysticku vrací hodnotu mezi -100 až +100 a při vystředění vrací hodnotu nula. To pak znamená, že osy joysticku, když jsou zatlačeny, se rovnají -100 % až 100 %. Čím dále směrem k 100 nebo -100 jsou osy posunuty, tím rychleji se motor bude točit.

Blok [Spin] se pak používá ke skutečnému pohybu motoru. To je ekvivalentní sešlápnutí plynu na autě, jakmile byl nastaven směr. To umožňuje, aby byl každý motor řízen jednou ze čtyř os ovladače. 

Detailní záběr čtyř hromádek bloků v projektu Option 3 VEXcode V5. První zásobník přečte „Když stisknete tlačítko nahoru na ovladači 1, otočíte ArmMotor nahoru“. Druhý zásobník zobrazuje stav „Když je tlačítko Nahoru na ovladači 1 uvolněno, ArmMotor se zastaví“. Třetí zásobník zobrazuje zprávu „Když stisknete tlačítko Controller1, otočíte ArmMotor dolů“. Čtvrtý zásobník zobrazuje stav „Když je tlačítko Controller1 uvolněno, zastaví se ArmMotor“.

 

Pro tento příklad kódu byl použit Clawbot. Když jsou tlačítka na ovladači použita ke zvedání a spouštění ramene, jakmile je tlačítko uvolněno, vlivem gravitace rameno spadne zpět dolů. Nastavení ramene i drápu na „hold“ zajistí, že rameno i dráp zůstanou na svém místě i po uvolnění tlačítek na ovladači.

{When controller axis} Bloky událostí se používají k mapování určitého chování na tlačítka, která jsou stisknuta nebo uvolněna na ovladači. V této části kódu jsou nastaveny podmínky, zda jsou stisknuta tlačítka Nahoru nebo Dolů. Pokud ano, dojde k určitému chování, jako je zvednutí, spuštění nebo zastavení paže.

Všimněte si, že poslední část kódu v projektu pro Claw má stejné vysvětlení.

Shrnutí možnosti 3: Použití událostí

Výhody Omezení Příklad situace
  • Může pojmout zakázkové sestavení, zejména hnací ústrojí s více než 4 motory
  • Jednomu tlačítku lze přiřadit více chování
  • Může přiřadit chování různým osám na ovladači (oproti jediným možnostem Levá arkáda, Pravá arkáda, Dělená arkáda a Tankový pohon v konfiguraci zařízení)
  • Rychlejší provádění kódu, a tím i odezva tlačítka (protože každá podmínka je volána samostatně a není vložena do jednoho balíčku kódu)
  • Vyžaduje maximální znalost kódování možností (podmínky, smyčky, události a znalost tlačítek/joysticků na ovladači)
  • Použití ovladače s robotem vyrobeným na zakázku, zejména s nestandardním hnacím ústrojím
  • Když chcete jednomu tlačítku přiřadit více chování bez zpoždění. Například, když je stisknuto tlačítko Nahoru, dráp se může otevřít, jet vpřed a pak se zavřít kolem předmětu.

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

Last Updated: