Motory

Motory se směrovými šipkami

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.