Motory¶

Brian umožňuje pracovat se třemi různými typy motorů:
EV3 Velký motor
EV3 Střední motor
NXT Motor
Po inicializaci budou všechny typy motorů fungovat stejným způsobem.
Inicializace a připojení¶
Nejprve musíte inicializovat motor. Musíte určit typ motoru a port (A
, B
, C
, D
). Zde je příklad inicializace:
import brian.motors as motors
large = motors.EV3LargeMotor(motors.MotorPort.A)
medium = motors.EV3MediumMotor(motors.MotorPort.B)
nxt = motors.NXTMotor(motors.MotorPort.C)
Nyní můžete používat vlastní názvy pro ovládání motorů, stačí metodu oddělit tečkou. Například large.is_connected()
.
Po inicializaci musíte zkontrolovat, zda je motor připraven. Pomohou vám tyto funkce:
is_connected¶
- is_connected(self) bool
Zkontrolujte, zda je k portu něco připojeno.
- Vrací:
True, pokud byl detekován neprázdný port; jinak False.
is_ready¶
- is_ready(self) bool
Zkontrolujte, zda je k portu připojen správný motor a je připraven k ovládání.
Test
is_connected
se provádí interně, pokud vrátí false,is_ready
vždy vrátí false.- Vrací:
True, pokud je připojen motor správného typu; jinak False.
wait_until_ready¶
- wait_until_ready(self, timeout_ms: int | None = None) bool
Čeká, dokud není motor připraven. Tato funkce je blokující.
- Parametry:
timeout_ms – Maximální počet milisekund čekání. - Pokud není timeout zadán nebo je None, funkce bude čekat neomezeně dlouho.
- vrací úspěch:
True
: Senzor je připraven.False
: Senzor není připraven a časový limit vypršel.
close_motor¶
- close_motor(self)
Uvolněte port motoru pro jiné použití.
Ovládání pohybu¶
Nyní můžete motor ovládat těmito funkcemi:
run_unregulated¶
- run_unregulated(self, fraction: float) None
Spusťte motor s daným zlomkem maximální dostupné voltáže.
- Parametry:
fraction – Hodnota mezi -1.0 a +1.0, která určuje pracovní cyklus.
run_at_voltage¶
- run_at_voltage(self, volts: float) None
Spusťte motor na daném napětí.
- Parametry:
volts – Požadované napětí na motorech, ve voltech. Doporučený rozsah je od -napětí baterie do +napětí baterie (cca -8V až +8V). Maximální rozsah přijatý touto funkcí je -12V až +12V.
run_at_speed¶
- run_at_speed(self, deg_per_sec: int) None
Spusťte motor konstantní rychlostí.
- Parametry:
deg_per_sec – Požadovaná otáčivá rychlost, ve stupních za sekundu.
rotate_by_angle¶
- rotate_by_angle(self, angle: int, speed: int, timeout: int | None = None) MovementEnd
Otočte motor do nové pozice, relativně k aktuální pozici.
- Parametry:
angle – Úhel otočení, ve stupních.
speed – Rychlost použitá pro manévr, ve stupních za sekundu. Pokud je zadaná rychlost záporná, použije se absolutní hodnota.
timeout – Jak dlouho čekat na dokončení manévru, v milisekundách. Pokud je nula, funkce se okamžitě vrátí. Pokud časový limit vyprší, motor se nezastaví.
- Vrací:
Zda bylo čekání na dokončení úspěšné nebo proč skončilo, pokud skončilo předčasně.
rotate_to_angle¶
- rotate_to_angle(self, position: int, speed: int, timeout: int | None = None) MovementEnd
Otočte motor do nové pozice, relativně k nulové pozici.
- Parametry:
position – Úhel, na který se má motor otočit, ve stupních.
speed – Rychlost použitá pro manévr, ve stupních za sekundu. Pokud je zadaná rychlost záporná, použije se absolutní hodnota.
timeout – Jak dlouho čekat na dokončení manévru, v milisekundách. Pokud je nula, funkce se okamžitě vrátí. Pokud časový limit vyprší, motor se nezastaví.
- Vrací:
Zda bylo čekání na dokončení úspěšné nebo proč skončilo, pokud skončilo předčasně.
rotate_to_angle_without_speed_control¶
- rotate_to_angle_without_speed_control(self, position: int) None
Pokusit se co nejrychleji dosáhnout zadané pozice.
Tímto se ignorují veškeré limity rychlosti a zrychlení – musíte je zajistit sami pravidelným voláním této funkce s novými pozicemi.
- Parametry:
position – Úhel, na který se má motor otočit vzhledem k nulové pozici, ve stupních.
movement_done¶
- movement_done(self) bool
Zkontrolujte, zda byl poslední zadaný příkaz k pozici dokončen.
- Vrací:
True
pokud motor dosáhl cíle.True
pokud musel být manévr přerušen (např. byl motor odpojen).False
pokud se motor stále pohybuje.
wait_for_movement¶
- wait_for_movement(self, timeout_ms: int | None = None) MovementEnd
Počkejte, než motor dokončí poslední příkaz k pozici.
- Parametry:
timeout_ms – Jak dlouho čekat na dokončení manévru, v milisekundách. Pokud je nula, funkce se okamžitě vrátí. Pokud časový limit vyprší, motor se nezastaví.
- Vrací:
Zda bylo čekání na dokončení úspěšné nebo proč skončilo, pokud skončilo předčasně.
Zastavení¶
Zde jsou funkce pro zastavení pohybu motoru:
coast¶
- coast(self) None
Nechte motor volně se točit.
Tímto se vinutí motoru odpojí (volně plavou).
brake¶
- brake(self) None
Pasivně brzděte motor.
Tímto se vinutí motoru zkratují.
hold¶
- hold(self) None
Aktivně brzděte motor v aktuální pozici.
Tímto se motor aktivně ovládá tak, aby zůstal v aktuální pozici.
Stav motoru¶
Informace o stavu motoru během běhu programu poskytují následující funkce:
current_angle¶
- current_angle(self) int
Dotaz na aktuální úhel motoru.
- Vrací:
Úhel osy motoru ve stupních.
reset_angle¶
- reset_angle(self, new_value: int = 0) None
Nastavte nahromaděný úhel na zadanou pozici.
Za předpokladu, že se motor nebude pohybovat, funkce current_angle() začne vracet hodnotu newValue.
- Parametry:
new_value – Nová pozice motoru ve stupních.
current_speed¶
- current_speed(self) int
Dotaz na aktuální otáčivou rychlost motoru.
- Vrací:
Rychlost osy motoru ve stupních za sekundu.
current_torque¶
- current_torque(self) int
Dotaz na aktuální odhadovaný moment motoru.
- Vrací:
Moment motoru v milinewtonmetrech.
is_stalled¶
- is_stalled(self) bool
Zkontrolujte, zda je motor aktuálně zaseknutý.
- Vrací:
True pokud motor překračuje nějaký limit, jinak False.
limits¶
- property Motor.limits: MotorLimits
Nakonfigurujte různé limity regulátoru.
- Vrací:
Objekt MotorLimits, který lze použít k nastavení limitů.
motor_type¶
- property Motor.motor_type: MotorType
Zkontrolujte, s jakým typem motoru byl tento objekt inicializován.
- Vrací:
Vlastnosti a výchozí nastavení připojeného typu motoru.
Další informace¶
Pro více informací o motorech se podívejte na API Reference.