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.
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 |
|---|---|
|
Motorun dönüş yönü: |
# 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 |
|---|---|
|
Motorun dönüş yönü: |
|
Motorun dönüş mesafesi. |
|
İsteğe bağlı. Mesafe birimi: |
|
İsteğe bağlı. |
# 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 |
|---|---|
|
Motorun döneceği pozisyon değeri. |
|
İsteğe bağlı. Konum birimi: |
|
İsteğe bağlı. |
# 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 |
|---|---|
|
Dönme hızı %0 ile %100 arasında değişir. Bu, |
# 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 |
|---|---|
|
Motorun %0 ile %100 arasında kullanabileceği maksimum tork. Bu değer |
# 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 |
|---|---|
|
Motor için ayarlanacak konum değeri. |
|
İsteğe bağlı. Konum birimi: |
# 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 |
|---|---|
|
Motorun nasıl duracağı:
|
Ö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 |
|---|---|
|
Motorun bir hareketi tamamlamaya çalışabileceği süre. Bu, pozitif bir tamsayı |
|
İsteğe bağlı. Zaman birimi: |
# 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 |
|---|---|
|
İsteğe bağlı. Motor pozisyonunu döndürmek için kullanılacak birim: |
# 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)