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