Tank motory¶
Pokud chceš řídit robota jako pásové vozidlo, můžeš využít třídu MotorTank
ev3cxx::MotorTank motors(ev3cxx::MotorPort::B, ev3cxx::MotorPort::C);
Vytvořili jsme si objekt motors
, kde levý motor je nastaven na port B
a pravý na port C
.
Tankový mód aktuálně podporuje jen LARGE
motory. Ty se tedy nastavuji automaticky.
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.
left_speed
: rychlost levého motoru při jízdě; rozsah od -100 do 100right_speed
: rychlost pravého 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 motory. Nastavuje rychlost na 0.
Jako parametr se předává zda mají být motory zabržděny (true
) nebo se mají volně protáčet (false
).
Ve výchozím stavu brzdí (true
).
Použití: motors.off();
on()¶
void on(int left_speed = 50, int right_speed = 50)
Metoda on()
nastavuje rychlost motorů.
Jako parametry se předávají rychlosti motorů v rozsahu -100 až 100.
Ve výchozím stavu jsou left_speed
a right_speed
rovny hodnotě 50.
Použití: motors.on(50, 50);
Čas a otáčky¶
Poznámka
Nové parametry při nastavování otáček.
left_speed
: rychlost levého motoru při jízdě; rozsah od -100 do 100right_speed
: rychlost pravého motoru při jízdě; rozsah od -100 do 100time_ms
: čas v milisekundách, po který se budou motory 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 před zahájením dané akce (jen v případěblocking = true
); nechte výchozí hodnotu
onForSeconds()¶
void onForSeconds(int left_speed = 50,
int right_speed = 50,
unsigned int time_ms = 1000,
bool brake = true)
Metoda onForSeconds()
nastavuje čas, jak dlouho se mají motory točit.
Jako parametry se předávají: left_speed
, right_speed
, time_ms
, brake
.
Použití: motors.onForSeconds(50, 50, 1000);
Poznámka
LEGO Software 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 left_speed = 50,
int right_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á rychlejší motor otočit.
Jedna otáčka motoru odpovídá 360 stupňům.
Jako parametry se předávají: left_speed
, right_speed
, degrees
, brake
, blocking
, wait_after_ms
.
Použití: motors.onForDegrees(50, 50, 360);
onForRotations()¶
void onForRotations(int left_speed = 50,
int right_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á rychlejší motor otočit.
Jako parametry se předávají: left_speed
, right_speed
, rotations
, brake
, blocking
, wait_after_ms
.
Použití: motors.onForDegrees(50, 50, 1);
leftMotor() a rightMotor()¶
Motor& rightMotor();
Přes tyto metody, lze ovládat jen jeden motor z páru.
Nemusíte si tedy vytvářet nový objekt, pokud budete chtít v určitých situacích ovládat jen jeden motor.
Metoda leftMotor()
vrací instanci motoru, který byl při vytvoření objektu předán jako první, rightMotor()
vrací druhý motor v pořadí.
Metody vrací instanci daného motoru a následně nad ní lze volat všechny metody dostupné ve třídě Motor
.
Použití: motors.rightMotor().onForDegrees(50, 1);
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áčekleftMotor()
- vrátí instanci levého motorurightMotor()
- vrátí instanci pravého motoru