Liike#

Johdanto#

Motors control how parts of a robot move. Motors can be used to raise an arm, turn a claw, spin a wheel, or move another part of a build. Two motors can work together as a drivetrain to move and turn the whole robot.

Jokainen moottori konfiguroidaan Laitteet-ikkunassa. Moottorien nimet voivat muuttua versiosta riippuen. Esimerkiksi Competition Advanced 2.0 -versiossa on moottori nimeltä arm_motorMukautettu robotti voi käyttää eri moottorien nimiä.

Oletusarvoisesti FORWARD pyörittää moottoria vastapäivään ja REVERSE pyörittää moottoria myötäpäivään. Jos moottori on asetettu pyörimään taaksepäin Laitteet-ikkunassa, suunnat vaihtuvat.

VEX GO -moottori, jossa eteenpäin suuntautuva suunta on merkitty plusmerkillä ja nuolella, joka osoittaa moottorin pyörivän vasemmalle eli vastapäivään. VEX GO -moottori, jossa miinusmerkki osoittaa vastakkaisen suunnan ja nuoli osoittaa, että moottori pyörii oikealle eli myötäpäivään.

Moottoreita voi koodata monella tapaa. Alla on luettelo kaikista liikemetodeista:

Toiminnot — Pysäytä ja pyöritä moottoreita.

  • spin — Pyörittää moottoria eteen- tai taaksepäin ikuisesti.

  • spin_for — Pyörittää moottoria tietyn matkan.

  • spin_to_position — Pyörittää moottorin tiettyyn asentoon.

  • stop — Pysäyttää moottorin pyörimisen.

Mutaattorit — Säädä motorisia asetuksia.

  • set_velocity — Kertoo moottorille, kuinka nopeasti sen tulisi pyöriä.

  • set_max_torque — Määrittää, kuinka voimakkaasti moottori saa työntää pyöriessään.

  • set_position — Muuttaa moottorin nykyisen sijainnin uuteen arvoon.

  • set_stopping — Määrittää, miten moottori pysäytetään: jarruttamalla, rullaamalla tai pitämällä.

  • set_timeout — Asettaa, kuinka kauan moottori yrittää suorittaa liikkeen loppuun.

Getterit — Tarkista moottorin tila.

  • get_position — Palauttaa moottorin nykyisen sijainnin.

  • get_velocity — Palauttaa moottorin pyörimisnopeuden prosentteina välillä -100 % - 100 %.

  • get_current — Palauttaa moottorin käyttämän akusta saatavan tehon prosentteina 0 %:sta 100 %:iin.

  • is_stopped — Palauttaa totuusarvona tiedon siitä, onko moottori pysähtynyt.

  • is_moving — Palauttaa loogisena arvona tiedon siitä, pyöriikö moottori.

Toiminnot#

spin#

spin pyörittää moottoria eteen- tai taaksepäin ikuisesti. Moottori jatkaa pyörimistä, kunnes sille annetaan toinen toiminto, kuten pyöriminen eri suuntaan tai pysähtyminen.

Usage:
arm_motor.spin(direction)

Parametrit

Kuvaus

direction

Moottorin pyörimissuunta: FORWARD tai REVERSE.

# Build Used: Competition Advanced 2.0
def main():
    # Raise the ArmMotor, then stop
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

spin_for#

spin_for pyörittää moottoria tietyn matkan. Pyöritys on suhteessa moottorin nykyiseen sijaintiin. Projekti odottaa, kunnes moottori on pyörinyt loppuun ennen seuraavan koodirivin suorittamista.

Usage:
arm_motor.spin_for(direction, angle, units, wait)

Parametrit

Kuvaus

direction

Moottorin pyörimissuunta: FORWARD tai REVERSE.

angle

Moottorin pyörimismatka. DEGREES käytä kokonaislukuja. TURNS voi käyttää kokonaislukuja tai desimaalilukuja.

units

Valinnainen. Etäisyyden yksikkö: DEGREES (oletus) tai TURNS.

wait

Valinnainen. wait=True (oletus) saa projektin odottamaan, kunnes moottori on pyörinyt loppuun, ennen kuin seuraava koodirivi suoritetaan. wait=False saa seuraavan koodirivin suoritettavaksi heti.

# Build Used: Competition Advanced 2.0
def main():
    # Raise and lower the ArmMotor
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_for(FORWARD, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

spin_to_position#

spin_to_position pyörittää moottoria tiettyyn asentoon.

Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. Projektin alussa moottorin asento asetetaan 0 asteeseen. Moottorin asento voidaan asettaa myös käyttämällä set_position-metodia.

Paikka-arvot ovat absoluuttisia. Tämä tarkoittaa, että pyörimissuunta riippuu moottorin nykyisestä asennosta.

Esimerkiksi, jos moottori käynnistyy 0 asteessa ja pyörii 720 asteen kulmaan, se pyörii kaksi kierrosta eteenpäin. Jos se sitten pyörii 360 asteen kulmaan, se pyörii yhden kierroksen taaksepäin, koska 360 on pienempi kuin 720.

Usage:
arm_motor.spin_to_position(angle, units, wait)

Parametrit

Kuvaus

angle

Moottorin pyörimisasennon arvo. DEGREES käytä kokonaislukuja. TURNS voi käyttää kokonaislukuja tai desimaalilukuja.

units

Valinnainen. Sijaintiyksikkö: DEGREES (oletus) tai TURNS.

wait

Valinnainen. wait=True (oletus) saa projektin odottamaan, kunnes moottori on pyörinyt loppuun, ennen kuin seuraava koodirivi suoritetaan. wait=False saa seuraavan koodirivin suoritettavaksi heti.

# Build Used: Competition Advanced 2.0
def main():
    # Return ArmMotor to 0 degrees after raising
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

stop#

stop pysäyttää moottorin pyörimisen.

Usage:
arm_motor.stop()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# Build Used: Competition Advanced 2.0
def main():
    # Raise the ArmMotor
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

Mutaattorit#

set_velocity#

set_velocity kertoo moottorille, kuinka nopeasti sen tulisi pyöriä. Suurempi prosenttiosuus saa moottorin pyörimään nopeammin ja pienempi prosenttiosuus hidastaa sitä.

Jokainen projekti alkaa siten, että jokainen moottori pyörii oletusarvoisesti 50 % nopeudella.

Huomautus: Suurempi nopeus saa moottorin pyörimään nopeammin, mutta se voi olla epätarkempi. Pienempi nopeus saa moottorin pyörimään hitaammin, mutta se voi olla tarkempi.

Usage:
arm_motor.set_velocity(velocity)

Parametrit

Kuvaus

velocity

Pyörimisnopeus välillä 0–100 %. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor at different velocities
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    # Move slow
    arm_motor.set_velocity(20)
    arm_motor.spin_for(FORWARD, 180, DEGREES)
    wait(1, SECONDS)
    # Move fast
    arm_motor.set_velocity(100)
    arm_motor.spin_for(REVERSE, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_max_torque#

Vääntömomentti on vääntövoima. Se osoittaa, kuinka voimakkaasti moottori pystyy työntämään tai vetämään pyöriessään.

set_max_torque asettaa moottorin käyttämän suurimman sallitun vääntömomentin.

Suurempi prosenttiosuus antaa moottorin työntää kovemmin, esimerkiksi raskasta esinettä nostettaessa. Pienempi prosenttiosuus rajoittaa sitä, kuinka kovaa moottori voi työntää. Tämä voi auttaa suojaamaan robottia, jos moottori jumiutuu tai saavuttaa liikeradan rajan.

Jokainen projekti aloitetaan oletusarvoisesti moottorin 50 %:n vääntömomentilla.

Usage:
arm_motor.set_max_torque(value)

Parametrit

Kuvaus

value

Moottorin käyttämä suurin vääntömomentti välillä 0–100 %. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor at different torques
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    # Move with less torque
    arm_motor.set_max_torque(20)
    arm_motor.spin_for(FORWARD, 180, DEGREES)
    wait(1, SECONDS)
    # Move with maximum torque
    arm_motor.set_max_torque(100)
    arm_motor.spin_for(REVERSE, 180, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_position#

Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. set_position muuttaa moottorin nykyisen asennon uuteen arvoon.

Esimerkiksi jos moottori on pyörinyt 180 astetta, asennon asettaminen 0 asteeseen palauttaa asennon 180:stä 0 asteeseen. Tämän jälkeen moottori voi pyöriä asentoihin tämän uuden arvon perusteella.

Usage:
arm_motor.set_position(position, units)

Parametrit

Kuvaus

position

Moottorille asetettava asentoarvo. DEGREES käytetään kokonaislukuja. TURNS voidaan käyttää kokonaislukuja tai desimaalilukuja.

units

Valinnainen. Sijaintiyksikkö: DEGREES (oletus) tai TURNS.

# Build Used: Competition Advanced 2.0
def main():
    # Return ArmMotor to 0 degrees after raising
    arm_motor.set_position(0, DEGREES)
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    wait(1, SECONDS)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

set_stopping#

set_stopping määrittää, miten moottori pysäytetään: jarruttamalla, rullaamalla tai pitämällä.

Usage:
arm_motor.set_stopping(mode)

Parametrit

Kuvaus

mode

Miten moottori pysähtyy:

  • BRAKE — Pysähtyy välittömästi.
  • COAST — Hidastaa pysähtymiseen.
  • HOLD — Pysähtyy välittömästi ja pitää moottorin asennon.

Jos esimerkiksi käytetään Competition Advanced 2.0 -versiota ja arm_motor on asetettu arvoon HOLD, moottori pitää käsivarren nykyisessä asennossa, kunnes käsivartta liikutetaan uudelleen. Tämä tarkoittaa, että moottori toimii painovoimaa vastaan ​​pitääkseen käsivarren ilmassa, jos moottori on pysäytettynä käsivarsi nostettuna.

Jos tätä menetelmää ei käytetä, moottori käyttää pysäytettäessä asetusta BRAKE.

# Build Used: Competition Advanced 2.0
def main():
    # Move the ArmMotor, then coast to a stop
    arm_motor.set_velocity(20)
    arm_motor.set_stopping(COAST)
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

set_timeout#

set_timeout asettaa ajan, jonka moottori yrittää suorittaa liikkeen loppuun. Jos moottori ei pysty suorittamaan sitä tässä ajassa, se lopettaa yrittämisen ja siirtyy seuraavalle koodiriville. Tämä estää moottoria jumiutumasta liikkeeseen.

Usage:
arm_motor.set_timeout(value, units)

Parametrit

Kuvaus

value

Aika, jonka moottori voi yrittää suorittaa liikkeen loppuun. Tämä voi olla positiivinen kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Aikayksikkö: SECONDS (oletus) tai MSEC (millisekuntia).

# Build Used: Competition Advanced 2.0
def main():
    # Move ArmMotor as far as possible for 1 second before resetting
    arm_motor.set_position(0, DEGREES)
    arm_motor.set_timeout(1, SECONDS)
    arm_motor.spin_for(REVERSE, 180, DEGREES)
    arm_motor.spin_to_position(0, DEGREES)

# Start threads — Do not delete
start_thread(main)

Getterit#

get_position#

Moottorin asento ilmaisee, kuinka pitkälle se on pyörinyt, mitattuna yksiköissä DEGREES tai TURNSYksi kierros vastaa 360 astetta. get_position palauttaa moottorin nykyisen sijainnin.

Projektin alussa moottorin asento on asetettu arvoon 0 astetta. Jos moottori pyörii yhden kierroksen eteenpäin, asento on 360 astetta eli 1 kierros. Jos moottori pyörii vastakkaiseen suuntaan, asento on negatiivinen.

Usage:
arm_motor.get_position(units)

Parametrit

Kuvaus

units

Valinnainen. Yksikkö, joka palauttaa moottorin asennon muodossa: DEGREES (oletus) tai TURNS.

# Build Used: Competition Advanced 2.0
def main():
    # Display how far the ArmMotor moves after one second
    arm_motor.set_position(0, DEGREES)
    console.print("Start: ")
    console.print(arm_motor.get_position(DEGREES))
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    arm_motor.stop()
    console.print("After: ")
    console.print(arm_motor.get_position(DEGREES))

# Start threads — Do not delete
start_thread(main)

get_velocity#

get_velocity palauttaa moottorin pyörimisnopeuden prosentteina väliltä -100 % - 100 %.

Positiivinen arvo tarkoittaa, että moottori pyörii eteenpäin. Negatiivinen arvo tarkoittaa, että moottori pyörii taaksepäin.

Usage:
arm_motor.get_velocity()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# Build Used: Competition Advanced 2.0
def main():
    # Display the ArmMotor's velocity when it moves
    console.print("Resting: ")
    console.print(arm_motor.get_velocity())
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    console.print("Moving: ")
    console.print(arm_motor.get_velocity())
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

get_current#

get_current palauttaa moottorin käyttämän akusta saatavan tehon prosentteina 0 prosentista 100 prosenttiin.

Suurempi virta-arvo tarkoittaa, että moottori käyttää enemmän tehoa. Näin voi käydä, kun moottori nostaa jotain raskasta, työntää jotakin esinettä vasten tai yrittää liikkua jumissa ollessaan.

Usage:
arm_motor.get_current()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# Build Used: Competition Advanced 2.0
def main():
    # Display the motor's current when it moves
    console.print("Resting: ")
    console.print(arm_motor.get_current())
    console.new_line()
    arm_motor.spin(REVERSE)
    wait(1, SECONDS)
    console.print("Moving: ")
    console.print(arm_motor.get_current())
    arm_motor.stop()

# Start threads — Do not delete
start_thread(main)

is_stopped#

is_stopped palauttaa totuusarvona tiedon siitä, onko moottorin liike päättynyt. Tätä voidaan käyttää muiden moottorin liikkeeseen perustuvien toimintojen ajoituksen ohjaamiseen.

  • True — Moottori on lakannut liikkumasta.

  • False — Moottori liikkuu edelleen.

Tämä metodi toimii yhdessä seuraavien Motion-metodien kanssa, joilla on wait -parametri: spin_for ja spin_to_position.

Usage:
arm_motor.is_stopped()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# Build Used: Competition Advanced 2.0
def main():
    # Turn the Eye Sensor's light on while ArmMotor is moving
    arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while True:
        if arm_motor.is_stopped():
            eye.set_light(OFF)
        else:
            eye.set_light(ON)

# Start threads — Do not delete
start_thread(main)

is_moving#

is_moving palauttaa totuusarvona tiedon siitä, pyöriikö moottori. Tätä voidaan käyttää muiden moottorin liikkeeseen perustuvien toimintojen ajoituksen ohjaamiseen.

  • True — Moottori pyörii.

  • False — Moottori ei pyöri.

Tämä metodi toimii yhdessä seuraavien Motion-metodien kanssa, joilla on wait -parametri: spin_for ja spin_to_position.

Usage:
arm_motor.is_moving()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# Build Used: Competition Advanced 2.0
def main():
    # Turn the Eye Sensor's light on while ArmMotor is moving
    arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while True:
        if arm_motor.is_moving():
            eye.set_light(ON)
        else:
            eye.set_light(OFF)

# Start threads — Do not delete
start_thread(main)