Hareket#

giriiş#

Motorlar, bir robotun parçalarının nasıl hareket ettiğini kontrol eder. Motorlar bir kolu kaldırmak, bir pençeyi döndürmek, bir tekerleği döndürmek veya yapının başka bir parçasını hareket ettirmek için kullanılabilir. İki motor, tüm robotu hareket ettirmek ve döndürmek için bir tahrik sistemi olarak birlikte çalışabilir.

Her motor, Aygıtlar penceresinde yapılandırılır. Sürüme bağlı olarak motor adları değişebilir. Örneğin, Competition Advanced 2.0 sürümünde arm_motoradlı bir motor bulunur. Özel bir robot farklı motor adları kullanabilir.

Varsayılan olarak, FORWARD bir motoru saat yönünün tersine, REVERSE ise saat yönünde döndürür. Cihazlar penceresinde bir motorun ters yönde dönmesi ayarlanırsa, bu yönler değiştirilir.

İleri yönü gösteren artı işareti ve sola doğru, yani saat yönünün tersine döndüğünü gösteren ok bulunan bir VEX GO Motoru. VEX GO motorunun ters yönünü gösteren eksi işareti ve sağa, yani saat yönünde döndüğünü gösteren ok işareti.

Motorları kodlamanın birçok yolu vardır. Aşağıda tüm Hareket yöntemlerinin listesi bulunmaktadır:

İşlemler — Motorları durdur ve döndür.

  • spin — Bir motoru sonsuza dek ileri veya geri döndürür.

  • spin_for — Bir motoru belirli bir mesafe boyunca döndürür.

  • spin_to_position — Bir motoru belirli bir konuma döndürür.

  • stop — Bir motorun dönmesini durdurur.

Motor Ayarlayıcıları — Motor ayarlarını düzenleyin.

  • set_velocity — Bir motora ne kadar hızlı döneceğini söyler.

  • set_max_torque — Bir motorun dönerken ne kadar sert itmesine izin verildiğini ayarlar.

  • set_position — Motorun mevcut konumunu yeni bir değere değiştirir.

  • set_stopping — Bir motorun hareket etmeyi nasıl durduracağını ayarlar: frenleme, serbest sürüş veya tutma yoluyla.

  • set_timeout — Bir motorun bir hareketi tamamlamaya çalışacağı süreyi ayarlar.

Getter’lar — Motor durumunu kontrol edin.

  • get_position — Motorun mevcut konumunu döndürür.

  • get_velocity — Motorun dönüş hızını -100% ile 100% arasında bir yüzde olarak döndürür.

  • get_current — Motorun bataryadan ne kadar güç kullandığını %0 ile %100 arasında bir yüzde olarak döndürür.

  • is_stopped — Motorun hareketinin bitip bitmediğini Boolean değer olarak döndürür.

  • is_moving — Motorun dönüp dönmediğini Boolean değer olarak döndürür.

Eylemler#

spin#

spin bir motoru sonsuza kadar ileri veya geri yönde döndürür. Motor, farklı bir yönde döndürme veya durdurma gibi başka bir işlem verilene kadar dönmeye devam edecektir.

Usage:
arm_motor.spin(direction)

Parametreler

Tanım

direction

Motorun dönüş yönü: FORWARD veya 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 komutu, bir motoru belirli bir mesafe boyunca döndürür. Dönme, motorun mevcut konumuna göre belirlenir. Proje, bir sonraki kod satırı çalışmadan önce motorun dönmesi bitene kadar bekleyecektir.

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

Parametreler

Tanım

direction

Motorun dönüş yönü: FORWARD veya REVERSE.

angle

Motorun dönüş mesafesi. DEGREES tam sayı kullanın. TURNS tam sayı veya ondalık sayı kullanılabilir.

units

İsteğe bağlı. Mesafe birimi: DEGREES (varsayılan) veya TURNS.

wait

İsteğe bağlı. wait=True (varsayılan) projenin bir sonraki kod satırı çalışmadan önce motorun dönmesinin bitmesini beklemesini sağlar. wait=False bir sonraki kod satırının hemen çalışmasını sağlar.

# 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 , bir motoru belirli bir konuma döndürür.

Bir motorun konumu, DEGREES veya TURNScinsinden ölçülen, ne kadar döndüğünü gösterir. Bir tur 360 dereceye eşittir. Bir projenin başlangıcında, motor konumu 0 dereceye ayarlanır. Motor konumu ayrıca set_position yöntemi kullanılarak da ayarlanabilir.

Pozisyon değerleri mutlaktır. Bu, dönüş yönünün motorun mevcut konumuna bağlı olduğu anlamına gelir.

Örneğin, motor 0 dereceden başlayıp 720 dereceye kadar dönerse, iki tur ileri dönecektir. Daha sonra 360 dereceye kadar dönerse, 360, 720’den küçük olduğu için bir tur geri dönecektir.

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

Parametreler

Tanım

angle

Motorun döneceği pozisyon değeri. DEGREES tam sayı kullanın.) TURNS (tam sayı veya ondalık sayı kullanabilirsiniz.)

units

İsteğe bağlı. Konum birimi: DEGREES (varsayılan) veya TURNS.

wait

İsteğe bağlı. wait=True (varsayılan) projenin bir sonraki kod satırı çalışmadan önce motorun dönmesinin bitmesini beklemesini sağlar. wait=False bir sonraki kod satırının hemen çalışmasını sağlar.

# 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 durdurur, motorun dönmesini durdurur.

Usage:
arm_motor.stop()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

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

Mutatörler#

set_velocity#

set_velocity komutu, bir motora ne kadar hızlı döneceğini söyler. Daha yüksek bir yüzde, motorun daha hızlı dönmesini, daha düşük bir yüzde ise daha yavaş dönmesini sağlar.

Her proje, varsayılan olarak her motorun %50 hızda dönmesiyle başlar.

Not: Daha yüksek hız, motorun daha hızlı dönmesini sağlar ancak hassasiyeti azaltabilir. Daha düşük hız ise motorun daha yavaş dönmesini sağlar ancak hassasiyeti artırabilir.

Usage:
arm_motor.set_velocity(velocity)

Parametreler

Tanım

velocity

Dönme hızı %0 ile %100 arasında değişir. Bu, integer veya ondalık sayı (float ) olabilir.

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

Tork, dönme kuvvetidir. Bir motorun dönerken ne kadar güçlü itme veya çekme kuvveti uygulayabileceğini gösterir.

set_max_torque , bir motorun kullanmasına izin verilen maksimum torku belirler.

Daha yüksek bir yüzde, motorun daha fazla itme gücü uygulamasını sağlar, örneğin ağır bir nesneyi kaldırırken olduğu gibi. Daha düşük bir yüzde ise motorun ne kadar itme gücü uygulayabileceğini sınırlar. Bu, motorun sıkışması veya hareket edebileceği sınırın sonuna ulaşması durumunda robotu korumaya yardımcı olabilir.

Her proje, varsayılan olarak her motorun torkunun %50’sinde başlayacak şekilde oluşturulur.

Usage:
arm_motor.set_max_torque(value)

Parametreler

Tanım

value

Motorun %0 ile %100 arasında kullanabileceği maksimum tork. Bu değer integer (tam sayı) veya ondalık sayı (float ) olabilir.

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

Bir motorun konumu, DEGREES veya TURNSile ölçülen, ne kadar döndüğünü gösterir. Bir tur 360 dereceye eşittir. set_position , motorun mevcut konumunu yeni bir değere değiştirir.

Örneğin, bir motor 180 derece döndüyse, pozisyonu 0 dereceye ayarlamak, bu pozisyonu 180 dereceden 0 dereceye sıfırlar. Ardından motor, bu yeni değere göre pozisyonlara dönebilir.

Usage:
arm_motor.set_position(position, units)

Parametreler

Tanım

position

Motor için ayarlanacak konum değeri. DEGREES tam sayı kullanın). TURNS (tam sayı veya ondalık sayı kullanılabilir).

units

İsteğe bağlı. Konum birimi: DEGREES (varsayılan) veya 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 , bir motorun hareket etmeyi nasıl durduracağını belirler: frenleme, serbest sürüş veya bekleme yoluyla.

Usage:
arm_motor.set_stopping(mode)

Parametreler

Tanım

mode

Motorun nasıl duracağı:

  • BRAKE — Hemen durur.
  • COAST — Yavaşlayarak durur.
  • HOLD — Hemen durur ve motorun konumunu korur.

Örneğin, Competition Advanced 2.0 sürümü kullanılıyorsa ve arm_motor değeri HOLDolarak ayarlanmışsa, motor, başka bir kol hareketi gerçekleşene kadar kolu mevcut konumunda tutacaktır. Bu, motor, kol havada iken durdurulmuşsa, kolu havada tutmak için yerçekimine karşı çalışacağı anlamına gelir.

Bu yöntem kullanılmazsa, motor dururken BRAKE değerini kullanacaktır.

# 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 parametresi, bir motorun bir hareketi tamamlamak için ne kadar süre deneyeceğini belirler. Motor bu süre içinde hareketi tamamlayamazsa, denemeyi bırakır ve bir sonraki kod satırına geçer. Bu, motorun bir harekette takılı kalmasını önler.

Usage:
arm_motor.set_timeout(value, units)

Parametreler

Tanım

value

Motorun bir hareketi tamamlamaya çalışabileceği süre. Bu, pozitif bir tamsayı integer veya ondalık sayı (float )) olabilir.

units

İsteğe bağlı. Zaman birimi: SECONDS (varsayılan) veya MSEC (milisaniye).

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

Getters#

get_position#

Bir motorun konumu, DEGREES veya TURNScinsinden ölçülen, ne kadar döndüğünü gösterir. Bir tur 360 dereceye eşittir. get_position motorun mevcut konumunu döndürür.

Projenin başlangıcında motorun konumu 0 dereceye ayarlanır. Motor bir tur ileri dönerse, konum 360 derece veya 1 tur olur. Motor ters yöne dönerse, konum negatif olur.

Usage:
arm_motor.get_position(units)

Parametreler

Tanım

units

İsteğe bağlı. Motor pozisyonunu döndürmek için kullanılacak birim: DEGREES (varsayılan) veya 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 , motorun dönüş hızını -100% ile 100% arasında bir yüzde olarak döndürür.

Pozitif bir değer, motorun ileri yönde döndüğünü gösterir. Negatif bir değer ise motorun ters yönde döndüğünü gösterir.

Usage:
arm_motor.get_velocity()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# 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 fonksiyonu, motorun bataryadan ne kadar güç kullandığını %0 ile %100 arasında bir yüzde olarak döndürür.

Daha yüksek akım değeri, motorun daha fazla güç kullandığı anlamına gelir. Bu durum, motor ağır bir şeyi kaldırırken, bir cisme karşı itme uygularken veya sıkışmışken hareket etmeye çalışırken ortaya çıkabilir.

Usage:
arm_motor.get_current()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# 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 , motorun hareketinin bitip bitmediğini Boolean bir değer olarak döndürür. Bu, motorun hareketine bağlı olarak diğer davranışların zamanlamasını kontrol etmek için kullanılabilir.

  • True — Motor hareket etmeyi bitirdi.

  • False — Motor hala hareket halinde.

Bu yöntem, wait parametresine sahip aşağıdaki Hareket yöntemleriyle birlikte çalışır: spin_for ve spin_to_position.

Usage:
arm_motor.is_stopped()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

# 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 , motorun dönüp dönmediğini Boolean bir değer olarak döndürür. Bu, motorun hareketine bağlı olarak diğer davranışların zamanlamasını kontrol etmek için kullanılabilir.

  • True — Motor dönüyor.

  • False — Motor dönmüyor.

Bu yöntem, wait parametresine sahip aşağıdaki Hareket yöntemleriyle birlikte çalışır: spin_for ve spin_to_position.

Usage:
arm_motor.is_moving()

Parametreler

Tanım

Bu yöntemin parametresi yoktur.

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