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é (
MEDIUM
aLARGE
): 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 čas, jak dlouho 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