Ohjaimen käyttäminen voi helpottaa robotin ajamista ja liikuttamista tehtävän suorittamiseksi. Drive-ohjelman käytössä on kuitenkin rajoituksia, ja robottirakenteen tai käsillä olevan tehtävän mukaan saatat tarvita erilaisia ohjaimia. Ohjaimen koodauksen avulla voit optimoida ohjaimen niin, että se sopii paremmin robottiisi ja käsillä olevaan tehtävään. On olemassa useita tapoja koodata ohjain VEXcode EXP:ssä. Jokaisella on etunsa ja rajoituksensa, ja jotkin menetelmät sopivat paremmin tiettyihin tilanteisiin halutun tuloksen mukaan.
Tämä artikkeli opastaa sinua kolmen eri vaihtoehdon läpi ohjaimen mukautettuun koodaukseen VEXcode EXP:ssä. Jokainen menetelmä kuvataan sen eduilla, rajoituksilla ja esimerkkikäyttötapauksella, joka auttaa sinua menetelmän valinnassa. Tätä artikkelia varten kaikki esitetyt koodiesimerkit luotiin Clawbotille. Samoja käsitteitä voitaisiin kuitenkin soveltaa lukuisiin muihin koontiversioihin, jotka löytyvät sivustosta builds.vex.com, ja mukautettuihin koontiversioihin.
Vaihtoehto 1: Painikkeiden määrittäminen laitekokoonpanossa
Tämä vaihtoehto on hyvä, kun käytät vakiorakennetta, kuten BaseBotia tai Clawbotia, ja haluat päästä nopeasti toimimaan.
Tämän vaihtoehdon avulla voit määrittää moottoreita, voimansiirron tai moottoriryhmiä ohjaimen painikkeille Laitekonfiguraatiossa. Lisätietoja painikkeiden määrittämisestä Device Configurationissa on tässä artikkelissa.
Yhteenveto vaihtoehdosta 1: Painikkeiden määrittäminen laitekokoonpanossa
|
Edut |
Rajoitukset |
Esimerkkitilanne |
|---|---|---|
|
|
|
Vaihtoehto 2: Forever Loopin käyttö
Jos käytät mukautettua koontiversiota tavallisen koontiversion sijaan tai haluat, että Ohjaimessasi on enemmän mukautuksia, tämä vaihtoehto on hyvä. Forever-silmukan käyttäminen on loistava johdatus mukautetun koodin luomiseen ohjaimellesi.
Tämä vaihtoehto asettaa kaikki ohjaimen ja siihen liittyvien painikkeiden ehdot Forever-silmukkaan. Tämä tarjoaa enemmän joustavuutta varsinkin mukautetuissa rakennesuunnitelmissa, mutta vaatii myös jonkin verran koodauskokemusta. Yksi huomioitavaa tätä vaihtoehtoa käytettäessä on kuitenkin projektin pituus ja monimutkaisuus. Mitä enemmän ehtoja lisätään, sitä pidemmäksi koodipino voi tulla. Tämä tarkoittaa, että useita lohkoja on suoritettava järjestyksessä, ja jos lohkoja on paljon, tämä voi hidastaa projektin suorittamista. Hitaampi projektin suorittaminen voi aiheuttaa viiveen Controller-painikkeiden painamisen ja robotin toiminnan näkemisen välillä.
Alla oleva esimerkki on yksi tapa, jolla voit käyttää Forever-silmukkaa mukautetun suunnittelun robotin kanssa (kuten mukautetun voimansiirron omaavan robotin kanssa) robotin ohjaamiseen ja kynsien ja käsien käsittelemiseen vuorovaikutuksessa esineiden kanssa.
Lataa "Vaihtoehto 2" VEXcode EXP -projektitiedosto >
Vaihtoehto 2 -koodin selitys.
|
Koodipala |
Selitys |
|---|---|
|
Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu. |
|
|
|
Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu. Forever-silmukkaa käytetään jatkuvasti tarkistamaan, mitä painikkeita ohjaimessa painetaan. [Set motor velocity] -lohkoja käytetään moottorin nopeuden asettamiseen nykyiseen Säätimen asentoon 2- ja 3-akselilla. Tämä vastaa auton käynnistämistä. Se ei välttämättä saa autoa liikkumaan, se vain asettaa sen. Jokainen ohjaussauvan akseli palauttaa arvon välillä -100 - +100 ja palauttaa arvon nolla, kun se on keskitetty. Tämä tarkoittaa sitten sitä, että ohjaussauvan akselit ovat työnnettäessä -100 % - 100 %. Mitä kauemmas kohti 100 tai -100 akseleita työnnetään, sitä nopeammin moottori pyörii. [Spin]-lohkoa käytetään sitten moottorin liikuttamiseen. Tämä vastaa auton kaasun painamista, kun suunta on asetettu. Näin jokaista moottoria voidaan ohjata yhdellä neljästä ohjainakselista. |
|
Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu. [If then else if then else] -lohkoa käytetään määrittämään tiettyjä toimintoja ohjaimen painikkeisiin, joita painetaan tai vapautetaan. Tässä koodin osassa asetetaan ehdot, jos painetaan ylös- tai alas-painikkeita. Jos näin on, tapahtuu tiettyjä käyttäytymismalleja, kuten käsivarren nostaminen ja laskeminen. Tilassa on myös toinen osa, jos kumpaakaan painiketta ei paineta, käsivarsi on asetettu pysähtymään. Huomaa, että seuraava Claw-projektin koodiosa noudattaa samaa selitystä. |
Yhteenveto vaihtoehdosta 2: Forever Loopin käyttö
|
Edut |
Rajoitukset |
Esimerkkitilanne |
|
|
|
Vaihtoehto 3: Tapahtumien käyttö
Jos haluat paljon räätälöintiä ohjaimellesi, Tapahtumien käyttö on sinulle paras vaihtoehto. Yksi painikkeen painallus voi laukaista useita robotin käyttäytymismalleja, kuten napin painalluksen avaamaan kynnen, nostamaan käsivarren ja ajamaan eteenpäin tietyn matkan. Jos yrität koodata useita toimintoja painiketta kohden Forever-silmukassa, projektin suorittaminen hidastuu dramaattisesti – tapahtumien avulla voit tehdä tämän tehokkaammin.
Tämä vaihtoehto käyttää Tapahtumia projektin kulun hajottamiseen. Tämä on samanlainen kuin Forever-silmukan käyttäminen, mutta mahdollistaa koodin järjestämisen, jotta painikkeen suorittaminen on nopeampi vasteaika. Nopeampi vasteaika tarkoittaa, että et näe viivettä Controller-painikkeiden painamisen ja robotin käyttäytymisen välillä. Tämä esimerkki näyttää samat käyttäytymiset kuin edellinen projekti, mutta tehty käyttämällä tapahtumia Forever Loopin sijaan.
Lataa "Vaihtoehto 3" VEXcode EXP -projektitiedosto >
Vaihtoehto 3 -koodin selitys.
|
Koodipala |
Selitys |
|---|---|
|
Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu. |
|
|
|
Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu. {When controller axis} Tapahtumalohkoja käytetään tiettyjen toimintojen laukaisemiseen, kun yhtä ohjaimen neljästä akselista muutetaan ohjaussauvoja käyttämällä. [Set motor velocity] -lohkoja käytetään moottorin nopeuden asettamiseen nykyiseen Säätimen asentoon A- ja D-akseleita pitkin. Tämä vastaa auton käynnistämistä. Se ei välttämättä saa autoa liikkumaan, se vain asettaa sen. Jokainen ohjaussauvan akseli palauttaa arvon välillä -100 - +100 ja palauttaa arvon nolla, kun se on keskitetty. Tämä tarkoittaa sitten sitä, että ohjaussauvan akselit ovat työnnettäessä -100 % - 100 %. Mitä kauemmas kohti 100 tai -100 akseleita työnnetään, sitä nopeammin moottori pyörii. [Spin]-lohkoa käytetään sitten moottorin liikuttamiseen. Tämä vastaa auton kaasun painamista, kun suunta on asetettu. Näin jokaista moottoria voidaan ohjata yhdellä neljästä ohjainakselista. |
|
Tässä koodiesimerkissä käytettiin Clawbotia. Kun ohjaimen painikkeita käytetään nostamaan ja laskemaan vartta, heti kun painike vapautetaan, varsi putoaa painovoiman vaikutuksesta takaisin alas. Sekä varren että kynnen asettaminen "pidolle" varmistaa, että sekä käsivarsi että kynsi pysyvät paikoillaan, vaikka ohjaimen painikkeet on vapautettu. {When controller axis} Tapahtumalohkoja käytetään määrittämään tiettyjä toimintoja ohjaimen painikkeisiin, joita painetaan tai vapautetaan. Tässä koodin osassa asetetaan ehdot, jos painetaan ylös- tai alas-painikkeita. Jos näin on, tapahtuu tiettyjä käyttäytymismalleja, kuten käsivarren nostaminen, laskeminen tai pysähtyminen. Huomaa, että Claw-projektin koodin viimeinen osa noudattaa samaa selitystä. |
Yhteenveto vaihtoehdosta 3: Tapahtumien käyttö
|
Edut |
Rajoitukset |
Esimerkkitilanne |
|
|
|