Motory¶
Motory jsou jednou ze základních komponent robota a proto s nimi začneme. Nejprve je potřeba vytvořit si instanci motorů:
ev3cxx::Motor motor(ev3cxx::MotorPort::A, ev3cxx::MotorType::LARGE);
Vytvořili jsme objekt motor, který je nastaven na port A a typ LARGE.
K dispozici máme všechny motorové porty na Bricku : A, B, C a D.
U typů máme 3 volby, které odpovídají stejným blokům v originálním LEGO Softwaru: UNREGULATED, MEDIUM a LARGE.
- neregulované motory (
UNREGULATED): u motorů se nastavuje jen výkon, změny zatížení (jízda do kopce) budou značně ovlivňovat rychlost - regulované motory střední a velké (
MEDIUMaLARGE): u motorů se nastavuje rychlost a motor se tuto rychlost snaží udržovat, upravuje tak výkon v závislosti na okolním prostředí (nerovnosti, překážky, atd.)
Při inicializaci je potřeba se rozhodnout v jakém režimu budete chtít s motorem pracovat.
Poznámka
- Pokud nebude řečeno jinak:
- při zadání parametru mimo rozsah se automaticky nastavuje maximální/minimální povolená hodnota.
- výchozí hodnoty metod odpovídají standardním hodnotám v LEGO Softwaru.
- Příklad:
- Rozsah povolených hodnot je v rozmezí od -100 do 100. Při zadání hodnoty -101, dojde k ořezání na hodnotu -100. Při zadání hodnoty 101, dojde k ořezání na hodnotu 100.
Výkon a rychlost¶
Poznámka
Parametry při nastavování rychlosti a výkonu.
speed: rychlost motoru při jízdě; rozsah od -100 do 100brake: brzdění;true- motor brzdí,false- motor lze volně protáčet
off()¶
void off(bool brake = true)
Metoda off() zastavuje motor.
Nastavuje rychlost nebo výkon (v závislosti na daném režimu) na 0.
Jako parametr se předává zda má motor zároveň brzdit (true) nebo se volně protáčet (false).
Ve výchozím stavu brzdí (true).
Použití: motor.off();
on()¶
void on(int power = 50)
Metoda on() nastavuje rychlost motoru.
Jako parametr se předává požadovaná rychlost v rozsahu -100 až 100.
Ve výchozím stavu je hodnota 50.
Použití: motor.on(50);
Čas a otáčky¶
Poznámka
Nové parametry při nastavování otáček.
speed: rychlost motoru při běhu; rozsah od -100 do 100time_ms: čas v milisekundách, po který se bude motor točit;degrees: počet stupňů, o které se má motor otočit; lze otáčet i o více než +- 360 stupňůrotations: počet otáček, které má motor udělat; lze zadávat i desetinná číslabrake: brzdění po otočení o daný počet stupňů;true- motor po dotočení brzdí,false- motor lze volně protáčetblocking: kdyžtrue- metoda blokuje další provádění programu, dokud nedokončí svůj úkolwait_after_ms: parametr, který nastavuje čekání po ukončení dané akce (jen v případěblocking = true); nechte výchozí hodnotu
onForSeconds()¶
void onForSeconds(int speed = 50,
unsigned int time_ms = 1000,
bool brake = true)
Metoda onForSeconds() nastavuje dobu, po kterou se má motor točit.
Jako parametry se předávají: speed, time_ms, brake.
Použití: motor.onForSeconds(50, 1000);
Poznámka
LEGO pracuje se sekundami a desetinnými čísly, EV3CXX používá milisekundy a celá čísla
Varování
Metoda je vždy blokující. Další příkazy v programu se začnou vykonávat až metoda skončí.
onForDegrees()¶
void onForDegrees(int speed = 50,
int degrees = 360,
bool brake = true,
bool blocking = true,
unsigned int wait_after_ms = 60)
Metoda onForDegrees() nastavuje počet stupňů, o které se má motor otočit.
Jedna otáčka motoru odpovídá 360 stupňům.
Jako parametry se předávají: speed, degrees, brake, blocking, wait_after_ms.
Použití: motor.onForDegrees(50, 360);
onForRotations()¶
void onForRotations(int speed = 50,
float rotations = 1,
bool brake = true,
bool blocking = true,
unsigned int wait_after_ms = 60)
Metoda onForRotations() nastavuje počet otáček, o které se má motor otočit.
Jako parametry se předávají: speed, rotations, brake, blocking, wait_after_ms.
Použití: motor.onForRotations(50, 1);
Čtení polohy a rychlosti¶
degrees()¶
int degrees()
Metoda degrees() vrací polohu motoru ve stupních.
Použití: motor.degrees();
rotations()¶
float rotations()
Metoda rotations() vrací polohu motoru v otáčkách (float = desetinné číslo).
Použití: motor.rotations();
resetPosition()¶
void resetPosition()
Metoda resetPosition() vyresetuje pozici motoru (ovlivní metodu degrees() a rotations()).
Použití: motor.resetPosition();
currentPower()¶
int currentPower()
Metoda currentPower() vrací aktuální rychlost motoru.
Použití: motor.currentPower();
Dostupné metody¶
Po vytvoření objektu motor lze na něm volat metody:
off()- vypne motory a začne brzditon()- nastaví rychlost na motorechonForSeconds()- jede po zadanou dobuonForDegrees()- otočí se o daný počet stupňůonForRotations()- otočí se o daný počet otáčekdegrees()- vrátí aktuální počet stupňů na motorurotations()- vrátí aktuální počet otáček na motoruresetPosition()- vyresetuje pozici motoru (ovlivní metodudegrees()arotations())currentPower()- vrátí aktuální rychlost motorugetType()- vrátí aktuálně nastavený typ motoru na daném portu v systému EV3RT