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.