Gerakan#

Perkenalan#

Motor mengontrol bagaimana bagian-bagian robot bergerak. Motor dapat digunakan untuk mengangkat lengan, memutar cakar, memutar roda, atau menggerakkan bagian lain dari suatu konstruksi. Dua motor dapat bekerja bersama sebagai sistem penggerak untuk menggerakkan dan memutar seluruh robot.

Setiap motor dikonfigurasi di jendela Perangkat. Tergantung pada versi build, nama motor dapat berubah. Misalnya, versi Competition Advanced 2.0 memiliki motor bernama arm_motorRobot kustom mungkin menggunakan nama motor yang berbeda.

Secara default, FORWARD memutar motor berlawanan arah jarum jam, dan REVERSE memutar motor searah jarum jam. Jika motor diatur untuk berbalik arah di jendela Perangkat, arah tersebut akan ditukar.

Motor VEX GO menunjukkan arah maju yang ditunjukkan oleh tanda plus dan panah yang menunjukkan bahwa motor berputar ke kiri, atau berlawanan arah jarum jam. Motor VEX GO yang menunjukkan arah putaran terbalik yang ditunjukkan oleh tanda minus dan panah yang menunjukkan putaran ke kanan, atau searah jarum jam.

Ada banyak cara untuk memprogram motor. Berikut adalah daftar semua metode Motion:

Tindakan — Hentikan dan putar motor.

  • spin — Memutar motor maju atau mundur selamanya.

  • spin_for — Memutar motor sejauh jarak tertentu.

  • spin_to_position — Memutar motor ke posisi tertentu.

  • stop — Menghentikan putaran motor.

Mutator — Sesuaikan pengaturan motor.

  • set_velocity — Memberi tahu motor seberapa cepat harus berputar.

  • set_max_torque — Menentukan seberapa keras motor diizinkan untuk mendorong saat berputar.

  • set_position — Mengubah posisi motor saat ini ke nilai baru.

  • set_stopping — Mengatur bagaimana motor akan berhenti bergerak: dengan mengerem, meluncur, atau menahan.

  • set_timeout — Menentukan berapa lama waktu yang dibutuhkan motor untuk mencoba menyelesaikan suatu gerakan.

Getter — Periksa status motor.

  • get_position — Mengembalikan posisi motor saat ini.

  • get_velocity — Mengembalikan seberapa cepat motor berputar, sebagai persentase dari -100% hingga 100%.

  • get_current — Mengembalikan berapa banyak daya yang digunakan motor dari baterai, sebagai persentase dari 0% hingga 100%.

  • is_stopped — Mengembalikan nilai Boolean apakah motor sudah selesai bergerak.

  • is_moving — Mengembalikan apakah motor berputar, sebagai nilai Boolean.

Tindakan#

spin#

spin memutar motor maju atau mundur selamanya. Motor akan terus berputar hingga diberi tindakan lain, seperti berputar ke arah yang berbeda atau berhenti.

Usage:
arm_motor.spin(direction)

Parameter

Keterangan

direction

Arah putaran motor: FORWARD atau 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 memutar motor sejauh jarak tertentu. Putaran relatif terhadap posisi motor saat ini. Proyek akan menunggu hingga motor selesai berputar sebelum baris kode berikutnya dijalankan.

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

Parameter

Keterangan

direction

Arah putaran motor: FORWARD atau REVERSE.

angle

Jarak putaran motor. DEGREES gunakan bilangan bulat. TURNS dapat menggunakan bilangan bulat atau desimal.

units

Opsional. Satuan jarak: DEGREES (standar) atau TURNS.

wait

Opsional. wait=True (default) membuat proyek menunggu hingga motor selesai berputar sebelum baris kode berikutnya dijalankan. wait=False membuat baris kode berikutnya dijalankan segera.

# 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 memutar motor ke posisi tertentu.

Posisi motor adalah seberapa jauh motor tersebut telah berputar, diukur dalam DEGREES atau TURNSSatu putaran sama dengan 360 derajat. Pada awal proyek, posisi motor diatur ke 0 derajat. Posisi motor juga dapat diatur menggunakan metode set_position.

Nilai posisi bersifat absolut. Ini berarti arah putaran bergantung pada posisi motor saat ini.

Sebagai contoh, jika motor mulai berputar pada sudut 0 derajat dan berputar hingga posisi 720 derajat, maka motor akan berputar maju dua putaran. Jika kemudian berputar hingga posisi 360 derajat, maka motor akan berputar mundur satu putaran, karena 360 kurang dari 720.

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

Parameter

Keterangan

angle

Nilai posisi putaran motor. DEGREES gunakan bilangan bulat. TURNS dapat menggunakan bilangan bulat atau desimal.

units

Opsional. Satuan posisi: DEGREES (standar) atau TURNS.

wait

Opsional. wait=True (default) membuat proyek menunggu hingga motor selesai berputar sebelum baris kode berikutnya dijalankan. wait=False membuat baris kode berikutnya dijalankan segera.

# 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 menghentikan motor agar tidak berputar.

Usage:
arm_motor.stop()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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)

Mutator#

set_velocity#

set_velocity memberi tahu motor seberapa cepat harus berputar. Persentase yang lebih tinggi membuat motor berputar lebih cepat dan persentase yang lebih rendah membuat motor berputar lebih lambat.

Setiap proyek dimulai dengan setiap motor berputar pada kecepatan 50% secara default.

Catatan: Kecepatan yang lebih tinggi membuat motor berputar lebih cepat, tetapi mungkin kurang presisi. Kecepatan yang lebih rendah membuat motor berputar lebih lambat, tetapi bisa lebih presisi.

Usage:
arm_motor.set_velocity(velocity)

Parameter

Keterangan

velocity

Kecepatan putaran dari 0% hingga 100%. Ini bisa berupa bilangan integer , atau bilangan desimal (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#

Torsi adalah gaya putar. Ini menunjukkan seberapa kuat motor dapat mendorong atau menarik saat berputar.

set_max_torque menetapkan torsi maksimum yang diizinkan untuk digunakan oleh motor.

Persentase yang lebih tinggi memungkinkan motor mendorong lebih keras, seperti saat mengangkat benda berat. Persentase yang lebih rendah membatasi seberapa keras motor dapat mendorong. Ini dapat membantu melindungi robot jika motor macet atau mencapai batas pergerakannya.

Setiap proyek dimulai dengan torsi masing-masing motor pada 50% secara default.

Usage:
arm_motor.set_max_torque(value)

Parameter

Keterangan

value

Torsi maksimum yang dapat digunakan motor dari 0% hingga 100%. Ini bisa berupa bilangan integer , atau bilangan desimal (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#

Posisi motor adalah seberapa jauh motor telah berputar, diukur dalam DEGREES atau TURNSSatu putaran sama dengan 360 derajat. set_position mengubah posisi motor saat ini ke nilai baru.

Sebagai contoh, jika sebuah motor telah berputar hingga 180 derajat, mengatur posisi ke 0 derajat akan mengatur ulang posisi tersebut dari 180 menjadi 0 derajat. Kemudian motor dapat berputar ke posisi berdasarkan nilai baru tersebut.

Usage:
arm_motor.set_position(position, units)

Parameter

Keterangan

position

Nilai posisi yang akan diatur untuk motor. DEGREES gunakan bilangan bulat. TURNS dapat menggunakan bilangan bulat atau desimal.

units

Opsional. Satuan posisi: DEGREES (standar) atau 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 mengatur bagaimana motor akan berhenti bergerak: dengan mengerem, meluncur, atau menahan.

Usage:
arm_motor.set_stopping(mode)

Parameter

Keterangan

mode

Cara motor akan berhenti:

  • BRAKE — Berhenti seketika.
  • COAST — Melambat hingga berhenti.
  • HOLD — Berhenti seketika dan menahan posisi motor.

Sebagai contoh, jika digunakan build Competition Advanced 2.0 dan arm_motor diatur ke HOLD, motor akan menahan lengan pada posisi saat ini hingga terjadi gerakan lengan lainnya. Ini berarti motor akan bekerja melawan gravitasi untuk menjaga lengan tetap di udara jika motor berhenti saat lengan terangkat.

Jika metode ini tidak digunakan, motor akan menggunakan BRAKE saat berhenti.

# 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 mengatur berapa lama motor akan mencoba menyelesaikan suatu gerakan. Jika motor tidak dapat menyelesaikannya dalam waktu tersebut, motor akan berhenti mencoba dan melanjutkan ke baris kode berikutnya. Ini mencegah motor macet pada suatu gerakan.

Usage:
arm_motor.set_timeout(value, units)

Parameter

Keterangan

value

Jumlah waktu yang dapat dihabiskan motor untuk mencoba menyelesaikan suatu gerakan. Ini bisa berupa bilangan bulat positif integerfloat).

units

Opsional. Satuan waktu: SECONDS (standar) atau MSEC (milidetik).

# 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)

Pencari#

get_position#

Posisi motor adalah seberapa jauh motor telah berputar, diukur dalam DEGREES atau TURNS. Satu putaran sama dengan 360 derajat. get_position mengembalikan posisi motor saat ini.

Pada awal proyek, posisi motor diatur ke 0 derajat. Jika motor berputar satu putaran ke depan, posisinya akan menjadi 360 derajat atau 1 putaran. Jika motor berputar ke arah lain, posisinya akan negatif.

Usage:
arm_motor.get_position(units)

Parameter

Keterangan

units

Opsional. Unit untuk mengembalikan posisi motor: DEGREES (default) atau 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 mengembalikan seberapa cepat motor berputar, sebagai persentase dari -100% hingga 100%.

Nilai positif berarti motor berputar maju. Nilai negatif berarti motor berputar mundur.

Usage:
arm_motor.get_velocity()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan seberapa banyak daya yang digunakan motor dari baterai, sebagai persentase dari 0% hingga 100%.

Nilai arus yang lebih tinggi berarti motor menggunakan lebih banyak daya. Hal ini dapat terjadi ketika motor mengangkat sesuatu yang berat, mendorong suatu objek, atau mencoba bergerak ketika macet.

Usage:
arm_motor.get_current()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan nilai Boolean yang menunjukkan apakah motor telah selesai bergerak. Ini dapat digunakan untuk mengontrol pengaturan waktu perilaku lain berdasarkan pergerakan motor.

  • True — Motor sudah selesai bergerak.

  • False — Motor masih bergerak.

Metode ini bekerja bersama dengan metode Gerak berikut yang memiliki parameter wait : spin_for dan spin_to_position.

Usage:
arm_motor.is_stopped()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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 mengembalikan nilai Boolean yang menunjukkan apakah motor berputar atau tidak. Ini dapat digunakan untuk mengontrol pengaturan waktu perilaku lain berdasarkan pergerakan motor.

  • True — Motor sedang berputar.

  • False — Motor tidak berputar.

Metode ini bekerja bersama dengan metode Gerak berikut yang memiliki parameter wait : spin_for dan spin_to_position.

Usage:
arm_motor.is_moving()

Parameter

Keterangan

Metode ini tidak memiliki parameter.

# 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)