Motor#

Zavedení#

Motory a skupiny motorů řídí pohyb částí robota. Motor ovládá jeden nakonfigurovaný chytrý motor IQ, zatímco MotorGroup ovládá více nakonfigurovaných chytrých motorů IQ společně, takže se pohybují v tandemu. Motory a skupiny motorů lze použít ke zvedání ramene, otáčení drápu, otáčení kola nebo pohybu jiné části konstrukce. Dva motory mohou spolupracovat jako pohon pro pohyb a otáčení celého robota.

Každý motor nebo skupina motorů se konfiguruje v okně Zařízení. V závislosti na sestavení se názvy motorů a skupin motorů mohou měnit. Tato stránka používá jako příklady názvů motor_1 a motor_group_1 V případě potřeby je nahraďte vlastními nakonfigurovanými názvy.

Motor VEX IQ (2. generace) zobrazující směr otáčení vpřed označený znaménkem plus a šipkou označující, že se otáčí doleva nebo proti směru hodinových ručiček. Motor VEX IQ (2. generace) ukazuje opačný směr otáčení, který je označen znaménkem mínus a šipkou označující, že se otáčí doprava, neboli ve směru hodinových ručiček.

Ve výchozím nastavení FORWARD otáčí motor proti směru hodinových ručiček a REVERSE otáčí motor ve směru hodinových ručiček. Pokud je motor nastaven na zpětný chod, směr otáčení se přepne.

Existuje mnoho způsobů, jak kódovat motory a skupiny motorů. Níže je uveden seznam všech metod Motor a MotorGroup:

Akce – Zastavení a roztočení motorů a skupin motorů.

  • spin — Roztočí motor nebo skupinu motorů dopředu nebo dozadu navždy.

  • spin_for — Roztočí motor nebo skupinu motorů o zadanou vzdálenost.

  • spin_to_position — Otočí motor nebo skupinu motorů do určité polohy.

  • stop — Zastaví otáčení motoru nebo skupiny motorů.

Mutátory – Upravte nastavení motoru a skupiny motorů.

  • set_velocity — Říká motoru nebo skupině motorů, jak rychle se má otáčet.

  • set_max_torque — Nastavuje, jak silně se motor nebo skupina motorů může otáčet.

  • set_position — Změní aktuální polohu motoru nebo skupiny motorů na novou hodnotu.

  • set_stopping — Nastavuje, jak se motor nebo skupina motorů zastaví: brzděním, doběhem nebo pozastavením.

  • set_timeout — Nastavuje, jak dlouho se bude motor nebo skupina motorů snažit dokončit pohyb.

  • set_reversed — Změní, zda se směr otáčení motoru obrátí.

  • reset_position — Změní aktuální pozici motoru nebo skupiny motorů na 0.

Gettery – Kontrola stavu motoru a skupiny motorů.

  • position — Vrátí aktuální pozici motoru nebo skupiny motorů.

  • velocity — Vrátí rychlost otáčení motoru nebo skupiny motorů.

  • current — Vrátí, kolik elektrického proudu motor nebo skupina motorů spotřebovává.

  • is_done — Vrátí, zda byl pohyb motoru nebo skupiny motorů dokončen, jako booleovskou hodnotu.

  • is_spinning — Vrátí, zda se motor nebo skupina motorů otáčí, jako booleovskou hodnotu.

  • direction — Vrátí směr otáčení motoru nebo skupiny motorů.

  • power — Vrátí, kolik energie motor nebo skupina motorů spotřebovává.

  • torque — Vrátí hodnotu krouticího momentu, který motor nebo skupina motorů používá.

  • efficiency — Vrátí, jak efektivně motor nebo skupina motorů využívá energii.

  • temperature — Vrátí teplotu motoru nebo skupiny motorů.

  • count — Vrátí počet motorů ve skupině motorů.

  • get_timeout — Vrátí aktuální dobu trvání časového limitu motoru nebo skupiny motorů.

Konstruktory – Ruční inicializace a konfigurace motorů a skupin motorů.

Akce#

spin#

spin roztočí motor nebo skupinu motorů dopředu nebo dozadu navždy. Motor nebo skupina motorů se bude otáčet, dokud nedostane jinou akci, například se roztočí jiným směrem nebo se zastaví.

Usage:
motor_1.spin(direction, velocity, units)

Parametry

Popis

direction

Směr otáčení motoru nebo skupiny motorů: FORWARD nebo REVERSE.

velocity

Volitelné. Rychlost otáčení od 0 % do 100 % při použití PERCENTMůže to být celé číslo integer nebo desetinné číslo (float).

units

Volitelné. Jednotka rychlosti:

  • PERCENT
  • RPM — Otáčky za minutu
  • VelocityUnits.DPS — Stupně za sekundu

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

spin_for#

spin_for roztočí motor nebo skupinu motorů o určitou vzdálenost. Otáčení je relativní vzhledem k aktuální poloze motoru nebo skupiny motorů. Projekt počká, dokud se motor nebo skupina motorů nedotočí, než se spustí další řádek kódu.

Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)

Parametry

Popis

direction

Směr otáčení motoru nebo skupiny motorů: FORWARD nebo REVERSE.

angle

Vzdálenost, o kterou se motor nebo skupina motorů otočí. Může to být integer nebo desetinné číslo (float).

units

Volitelné. Jednotka vzdálenosti: DEGREES (výchozí) nebo TURNS.

velocity

Volitelné. Rychlost otáčení od 0 % do 100 % při použití PERCENTMůže to být celé číslo integer nebo desetinné číslo (float).

units_v

Volitelné. Jednotka rychlosti:

  • PERCENT
  • RPM (výchozí) — Otáčky za minutu

wait

Volitelné.

  • wait=True (výchozí) — Projekt počká, dokud se motor nebo skupina motorů nedotočí, než se spustí další řádek kódu.
  • wait=False — Další řádek kódu se spustí okamžitě.

# Spin the motor forward, then put it
# at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)

# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.spin_for(REVERSE, 150, MM, 20, PERCENT)
wait(1, SECONDS)
# Spin faster
motor_1.spin_for(FORWARD, 150, MM, 100, PERCENT)

spin_to_position#

spin_to_position otočí motor nebo skupinu motorů do určité polohy.

Poloha motoru nebo skupiny motorů udává, o kolik se otočil, měřeno v DEGREES nebo TURNSJedna otáčka se rovná 360 stupňům. Na začátku projektu je poloha motoru nebo skupiny motorů nastavena na 0 stupňů. Polohu motoru nebo skupiny motorů lze také nastavit metodou set_position.

Hodnoty polohy jsou absolutní. To znamená, že směr otáčení závisí na aktuální poloze motoru nebo skupiny motorů.

Například pokud se motor nebo skupina motorů spustí na 0 stupních a otočí se do polohy 720 stupňů, otočí se o dvě otáčky dopředu. Pokud se poté otočí do polohy 360 stupňů, otočí se o jednu otáčku dozadu, protože 360 ​​je menší než 720.

Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)

Parametry

Popis

rotation

Hodnota polohy, do které se motor nebo skupina motorů otočí. Může to být integer nebo desetinné číslo (float).

units

Jednotka polohy: DEGREES nebo TURNS.

velocity

Volitelné. Rychlost otáčení od 0 % do 100 % při použití PERCENTMůže to být celé číslo integer nebo desetinné číslo (float).

units_v

Volitelné. Jednotka rychlosti:

  • PERCENT
  • RPM — Otáčky za minutu
  • VelocityUnits.DPS — Stupně za sekundu

wait

Volitelné.

  • wait=True (výchozí) — Projekt počká, dokud se motor nebo skupina motorů nedotočí, než se spustí další řádek kódu.
  • wait=False — Další řádek kódu se spustí okamžitě.

# Spin the motor forward, then
# put it at 90 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(90, DEGREES)

# Spin forward then quickly reverse
# to 0 degrees
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.spin_to_position(0, DEGREES, 100, PERCENT, wait=True)

stop#

stop zastaví otáčení motoru nebo skupiny motorů.

Usage:
motor_1.stop(mode)

Parametry

Popis

mode

Volitelné. Jak se motor nebo skupina motorů zastaví:

  • COAST — Zpomalí až do zastavení.
  • BRAKE (výchozí) — Okamžitě zastaví.
  • HOLD — Okamžitě zastaví a udrží polohu motoru.

# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()

# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop(COAST)

Mutátory#

set_velocity#

set_velocity určuje rychlost otáčení motoru nebo skupiny motorů. Vyšší procento způsobí, že se motor nebo skupina motorů otáčí rychleji, a nižší procento způsobí, že se motor nebo skupina motorů otáčí pomaleji.

Každý projekt začíná s každým motorem nebo skupinou motorů, které se standardně otáčí rychlostí 50 %.

Poznámka: Vyšší rychlost způsobí, že se motor nebo skupina motorů otáčí rychleji, ale může to být méně přesné. Nižší rychlost způsobí, že se motor nebo skupina motorů otáčí pomaleji, ale může to být přesnější.

Usage:
motor_1.set_velocity(velocity, units)

Parametry

Popis

velocity

Rychlost otáčení od 0 % do 100 % při použití PERCENTMůže to být celé číslo integer nebo desetinné číslo (float).

units

Volitelné. Jednotka rychlosti:

  • PERCENT
  • RPM — Otáčky za minutu
  • VelocityUnits.DPS — Stupně za sekundu

# Spin the motor at different velocities
# Using default velocity
motor_1.spin_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(REVERSE, 150, MM)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 150, MM)

set_max_torque#

Točivý moment ukazuje, jak silně může motor nebo skupina motorů tlačit nebo táhnout během otáčení.

set_max_torque nastavuje maximální krouticí moment, který může motor nebo skupina motorů použít.

Vyšší procento umožňuje motoru nebo skupině motorů tlačit silněji, například při zvedání těžkého předmětu. Nižší procento omezuje, jak silně může motor nebo skupina motorů tlačit. To může pomoci chránit robota, pokud se motor nebo skupina motorů zasekne nebo dosáhne konce možného pohybu.

Každý projekt začíná s výchozím nastavením krouticího momentu každého motoru nebo skupiny motorů na 50 %.

Usage:
motor_1.set_max_torque(value, units)

Parametry

Popis

value

Maximální točivý moment, který může motor nebo skupina motorů použít. Může to být integer nebo desetinné číslo (float).

units

Jednotka točivého momentu:

  • PERCENT
  • TorqueUnits.NM — Newtonmetry
  • TorqueUnits.INLB — Palce-libry

# Spin the motor at different torque values
# Default
motor_1.spin_to_position(45, DEGREES)
# Spin at a lower torque
motor_1.set_max_torque(20, PERCENT)
motor_1.spin_to_position(0, DEGREES)
# Spin at the max torque
motor_1.set_max_torque(100, PERCENT)
motor_1.spin_to_position(45, DEGREES)

set_position#

Poloha motoru nebo skupiny motorů udává, o kolik se otočil, měřeno v DEGREES nebo TURNSJedno otočení se rovná 360 stupňům. set_position změní aktuální polohu motoru nebo skupiny motorů na novou hodnotu.

Například pokud se motor nebo skupina motorů otočily o 180 stupňů, nastavení polohy na 0 stupňů resetuje tuto polohu ze 180 na 0 stupňů. Motor nebo skupina motorů se pak mohou otáčet do pozic na základě této nové hodnoty.

Usage:
motor_1.set_position(position, units)

Parametry

Popis

position

Hodnota pozice, která se má nastavit pro motor nebo skupinu motorů. Může to být integer nebo desetinné číslo (float).

units

Jednotka polohy: DEGREES nebo TURNS.

# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)

set_stopping#

set_stopping nastavuje, jak se motor nebo skupina motorů zastaví: brzděním, doběhem nebo pozastavením.

Usage:
motor_1.set_stopping(mode)

Parametry

Popis

mode

Jak se motor nebo skupina motorů zastaví:

  • BRAKE — Okamžité zastavení.
  • COAST — Zpomalení do úplného zastavení.
  • HOLD — Okamžitě zastavení a udržení polohy motoru.

# Spin the motor and coast to a stop
motor_1.set_velocity(100, PERCENT)
motor_1.set_stopping(COAST)
motor_1.spin(FORWARD)
wait(2, SECONDS)
motor_1.stop()

set_timeout#

set_timeout nastavuje, jak dlouho se bude motor nebo skupina motorů pokoušet dokončit pohyb. Pokud motor nebo skupina motorů nedokáže v tomto čase dokončit pohyb, přestane se snažit a přesune se na další řádek kódu. Tím se zabrání tomu, aby se motor nebo skupina motorů zasekly na pohybu.

Usage:
motor_1.set_timeout(value, units)

Parametry

Popis

value

Doba, po kterou se motor nebo skupina motorů může pokusit dokončit pohyb. Může se jednat o kladné celé číslo integer nebo desetinné číslo (float).

units

Volitelné. Jednotka času:

  • SECONDS
  • MSEC (výchozí) — Milisekundy

# Set a 0.5 second timeout for motor actions
motor_1.set_timeout(0.5, SECONDS)

# Try a long move that will time out early
motor_1.spin_for(FORWARD, 2, TURNS)
motor_1.spin_to_position(0, DEGREES)

set_reversed#

set_reversed mění, zda se směr otáčení motoru obrací. Tato metoda funguje stejně jako nastavení parametru reverse na True při konstrukci motoru Motor.

Poznámka: Tato metoda bude fungovat pouze s motorem, nikoli se skupinou motorů.

Usage:
motor_1.set_reversed(value)

Parametry

Popis

value

Zda je směr otáčení motoru obrácen:

  • True — Obrací směr otáčení motoru.
  • False — Vrátí směr otáčení motoru na výchozí hodnotu.

# Change the reverse direction while spinning
motor_1.spin_for(FORWARD, 45)
motor_1.set_reversed(True)
motor_1.spin_for(FORWARD, 45)

reset_position#

reset_position změní aktuální polohu motoru nebo skupiny motorů na 0.

Usage:
motor_1.reset_position()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Spin to 360 degrees, then reset the encoder
motor_1.spin_to_position(360, DEGREES)
motor_1.reset_position()

# Move again to 90 degrees from new zero point
motor_1.spin_to_position(90, DEGREES)

Gettery#

position#

Poloha motoru nebo skupiny motorů udává, o kolik se otočil, měřeno v DEGREES nebo TURNSJedna otáčka se rovná 360 stupňům. position vrací aktuální polohu motoru nebo skupiny motorů.

Na začátku projektu je poloha motoru nebo skupiny motorů nastavena na 0 stupňů. Pokud se motor nebo skupina motorů otočí o jednu otáčku dopředu, poloha bude 360 ​​stupňů neboli 1 otáčka. Pokud se motor nebo skupina motorů otočí opačným směrem, poloha bude záporná.

Usage:
motor_1.position(units)

Parametry

Popis

units

Volitelné. Jednotka pro vrácení polohy motoru nebo skupiny motorů v: DEGREES (výchozí) nebo TURNS.

# Spin the motor and display the
# ending position
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
brain.screen.print(motor_1.position())

velocity#

velocity vrací rychlost otáčení motoru nebo skupiny motorů.

Kladná hodnota znamená, že motor nebo skupina motorů se otáčí dopředu. Záporná hodnota znamená, že se otáčí dozadu.

Usage:
motor_1.velocity(units)

Parametry

Popis

units

Volitelné. Jednotka rychlosti, která se má vrátit:

  • PERCENT
  • RPM (výchozí) — Otáčky za minutu
  • VelocityUnits.DPS — Stupně za sekundu

current#

current vrací množství elektrického proudu spotřebovaného motorem nebo skupinou motorů, měřeno v ampérech od 0,0 do 1,2 A. Proud je množství elektřiny protékající motorem nebo skupinou motorů.

Vyšší hodnota proudu znamená, že motor nebo skupina motorů spotřebovává více elektrického proudu. K tomu může dojít, když motor nebo skupina motorů zvedá něco těžkého, tlačí na nějaký předmět nebo se snaží pohnout zaseknutým předmětem.

Toto lze použít ke kontrole, zda motor nebo skupina motorů během pohybu nemá problémy. Pokud proud zůstává vysoký, motor se může zahřívat nebo méně efektivně využívat energii.

Usage:
motor_1.current(units)

Parametry

Popis

units

Volitelné. Aktuální jednotka, která se má vrátit:

  • CurrentUnits.AMP — Amps

is_done#

is_done vrací booleovskou hodnotu, zda je pohyb motoru nebo skupiny motorů dokončen. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu motoru.

  • True — Pohyb motoru nebo skupiny motorů je dokončen.

  • False — Motor nebo skupina motorů se stále pohybuje.

Tato metoda spolupracuje s následujícími metodami Motion, které mají parametr wait : spin_for a spin_to_position.

Usage:
motor_1.is_done()

Parametry

Popis

Tato metoda nemá žádné parametry.

is_spinning#

is_spinning vrací booleovskou hodnotu, zda se motor nebo skupina motorů otáčí. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu motoru.

  • True — Motor nebo skupina motorů se otáčí.

  • False — Motor nebo skupina motorů se neotáčí.

Tato metoda spolupracuje s následujícími metodami Motion, které mají parametr wait : spin_for a spin_to_position.

Usage:
motor_1.is_spinning()

Parametry

Popis

Tato metoda nemá žádné parametry.

direction#

direction vrací aktuální směr otáčení motoru nebo skupiny motorů.

  • FORWARD

  • REVERSE

Usage:
motor_1.direction()

Parametry

Popis

Tato metoda nemá žádné parametry.

power#

power vrací množství energie spotřebované motorem nebo skupinou motorů ve wattech. Výkon ukazuje, jak rychle motor nebo skupina motorů spotřebovává energii.

Vyšší hodnota výkonu znamená, že motor nebo skupina motorů spotřebovává energii rychleji. K tomu může dojít, když motor nebo skupina motorů zvedá něco těžkého, tlačí na nějaký předmět nebo se snaží pohnout zaseknutým předmětem.

Toto lze použít k porovnání pohybů nebo ke kontrole, zda motor či skupina motorů nemají problémy. Pokud výkon zůstává vysoký, motor se může zahřívat nebo méně efektivně využívat energii.

Usage:
motor_1.power()

Parametry

Popis

Tato metoda nemá žádné parametry.

torque#

Točivý moment ukazuje, jak silně se motor nebo skupina motorů otáčí, tlačí nebo táhne během otáčení.

torque vrací, kolik momentu motor nebo skupina motorů používá.

Vyšší hodnota točivého momentu znamená, že motor nebo skupina motorů tlačí nebo táhne silněji. K tomu může dojít, když motor nebo skupina motorů zvedá něco těžkého, tlačí na nějaký předmět nebo se snaží pohnout zaseknutým předmětem.

To lze použít ke kontrole, zda motor nebo motorická skupina má potíže, nebo k porovnání, kolik tlaku potřebují různé pohyby.

Pro nastavení točivého momentu motoru nebo skupiny motorů použijte set_max_torque.

Usage:
motor_1.torque(units)

Parametry

Popis

units

Jednotka krouticího momentu, která se má vrátit:

  • TorqueUnits.NM (výchozí) — Newtonmetry
  • TorqueUnits.INLB — Palce-libry

efficiency#

efficiency vrací, jak efektivně motor nebo skupina motorů využívá energii, v procentech od 0 % do 100 %.

Účinnost ukazuje, kolik energie motoru nebo skupiny motorů se využívá k pohybu. Vyšší hodnota účinnosti znamená, že se k pohybu využívá více energie motoru nebo skupiny motorů. Nižší hodnota účinnosti může nastat, když motor nebo skupina motorů pracuje intenzivně, ale příliš se nepohybuje, například když je zaseknutý nebo tlačí na nějaký předmět.

To lze použít k porovnání pohybů nebo ke kontrole, zda motor nebo skupina motorů plýtvá energií, místo aby ji využívala k pohybu.

Usage:
motor_1.efficiency()

Parametry

Popis

Tato metoda nemá žádné parametry.

temperature#

temperature vrací teplotu motoru nebo skupiny motorů.

Teplota motoru ukazuje, jak je motor nebo skupina motorů zahřátá. Vyšší teplota znamená, že se motor nebo skupina motorů během provozu zahřívá. Aby motor fungoval na plný výkon, měl by se teplota motoru udržovat pod 55 stupňů Celsia.

Pokud se motor nebo motorová skupina příliš zahřeje, sníží svůj maximální proud, aby se chránil. Při 70 stupních Celsia se motor zastaví, dokud se neochladí.

Toto lze použít ke kontrole, zda se motor nebo skupina motorů příliš nezahřívá během opakovaných pohybů, dlouhých jízd nebo když tlačí na nějaký předmět.

Usage:
motor_1.temperature(units)

Parametry

Popis

units

Volitelné. Jednotka teploty, která se má vrátit:

  • TemperatureUnits.CELSIUS (výchozí)
  • TemperatureUnits.FAHRENHEIT

count#

count vrací počet motorů ve skupině motorů.

Poznámka: Tato metoda bude fungovat pouze se skupinou motorů, nikoli s motorem.

Usage:
motor_group_1.count()

Parametry

Popis

Tato metoda nemá žádné parametry.

get_timeout#

get_timeout vrací aktuální časový limit motoru nebo skupiny motorů v milisekundách.

Poznámka: Tato metoda bude fungovat pouze s motorem, nikoli se skupinou motorů.

Usage:
motor_1.get_timeout()

Parametry

Popis

Tato metoda nemá žádné parametry.

Konstruktéři#

Konstruktory se používají k ručnímu vytvoření Motor a MotorGroup mimo okno Devices.

Motor#

Motor vytvoří motor.

Usage:
motor_1 = Motor(smartport, gears, reverse)

Parametr

Popis

smartport

Inteligentní port, ke kterému je motor připojen, zapsaný jako Ports.PORTx, kde x je číslo portu.

gears

Volitelné. Převodový poměr motoru:

  • GearSetting.RATIO_1_1 (výchozí) — poměr 1:1
  • GearSetting.RATIO_2_1 — poměr 2:1
  • GearSetting.RATIO_3_1 — poměr 3:1

reverse

Volitelné. Nastavuje, zda se směr otáčení motoru obrací:

  • True — Obrací směr otáčení motoru.
  • False (výchozí) — Neobrací směr otáčení motoru.

# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)

Motor Group#

MotorGroup vytvoří skupinu motorů.

Usage:
motor_group_1 = MotorGroup(motors)

Parametr

Popis

motors

Názvy dříve vytvořených objektů Motor Motor mají být přidány do skupiny motorů. Do skupiny lze přidat až Motor.

# Create two motors
motor_group_1_motor_a = Motor(Ports.PORT1, False)
motor_group_1_motor_b = Motor(Ports.PORT6, True)

# Create a motor group with those motors
motor_group_1 = MotorGroup(motor_group_1_motor_a, motor_group_1_motor_b)