محرك#
مقدمة#
Motors and motor groups control how parts of a robot move. A Motor controls one configured IQ Smart Motor, while a MotorGroup controls multiple configured IQ Smart Motors together so they move in tandem. Motors and motor groups 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.
يتم تكوين كل محرك أو مجموعة محركات في نافذة الأجهزة. قد تختلف أسماء المحركات ومجموعات المحركات باختلاف الإصدار. تستخدم هذه الصفحة الأسماء motor_1 و motor_group_1 كمثال. استبدلها بالأسماء التي قمت بتكوينها حسب الحاجة.
افتراضياً، يُشغّل المفتاح FORWARD المحرك عكس اتجاه عقارب الساعة، بينما يُشغّل المفتاح REVERSE المحرك مع اتجاه عقارب الساعة. إذا تم ضبط المحرك على وضع الدوران العكسي، فسيتم عكس هذه الاتجاهات.
توجد طرق عديدة لبرمجة المحركات ومجموعات المحركات. فيما يلي قائمة بجميع طرق برمجة المحركات ومجموعات المحركات:
الإجراءات — إيقاف وتدوير المحركات ومجموعات المحركات.
spin— يدور محرك أو مجموعة محركات للأمام أو للخلف إلى الأبد.spin_for— يدور محركًا أو مجموعة محركات لمسافة محددة.spin_to_position— يقوم بتدوير محرك أو مجموعة محركات إلى موضع محدد.stop— يوقف محركًا أو مجموعة محركات من الدوران.
المُعدِّلات — اضبط إعدادات المحرك ومجموعة المحركات.
set_velocity— يخبر المحرك أو مجموعة المحركات بمدى سرعة الدوران.set_max_torque— يحدد مدى قوة الدفع المسموح بها للمحرك أو مجموعة المحركات أثناء الدوران.set_position— يغير الموضع الحالي للمحرك أو مجموعة المحركات إلى قيمة جديدة.set_stopping— يحدد كيفية توقف المحرك أو مجموعة المحركات عن الحركة: عن طريق الكبح أو الانزلاق أو التثبيت.set_timeout— يحدد مقدار الوقت الذي سيحاول فيه المحرك أو مجموعة المحركات إنهاء الحركة.set_reversed— يغير ما إذا كان اتجاه دوران المحرك معكوسًا.reset_position— يغير الموضع الحالي للمحرك أو مجموعة المحركات إلى 0.
أجهزة الاستشعار — تحقق من حالة المحرك ومجموعة المحركات.
position— يعيد الموضع الحالي للمحرك أو مجموعة المحركات.velocity— تُرجع مدى سرعة دوران المحرك أو مجموعة المحركات.current— إرجاع مقدار التيار الكهربائي الذي يستخدمه المحرك أو مجموعة المحركات.is_done— تُرجع ما إذا كان المحرك أو مجموعة المحركات قد انتهى من الحركة، كقيمة منطقية.is_spinning— تُرجع ما إذا كان المحرك أو مجموعة المحركات يدور، كقيمة منطقية.direction— يعيد اتجاه دوران المحرك أو مجموعة المحركات.power— تُرجع مقدار الطاقة التي يستخدمها المحرك أو مجموعة المحركات.torque— تُرجع مقدار عزم الدوران الذي يستخدمه المحرك أو مجموعة المحركات.efficiency— تُرجع مدى كفاءة المحرك أو مجموعة المحركات في استخدام الطاقة.temperature— تُرجع درجة حرارة المحرك أو مجموعة المحركات.count— تُرجع عدد المحركات في مجموعة المحركات.get_timeout— إرجاع مدة المهلة الحالية للمحرك أو مجموعة المحركات.
المنشئات — تهيئة وتكوين المحركات ومجموعات المحركات يدويًا.
Motor— يُنشئ محركًا.MotorGroup— إنشاء مجموعة محركات.
الإجراءات#
spin#
spin المحرك أو مجموعة المحركات للأمام أو للخلف باستمرار. سيستمر المحرك أو مجموعة المحركات في الدوران حتى يتم إعطاؤه إجراءً آخر، مثل الدوران في اتجاه مختلف أو التوقف.
Usage:
motor_1.spin(direction, velocity, units)
حدود |
وصف |
|---|---|
|
اتجاه دوران المحرك أو مجموعة المحركات: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
اختياري. وحدة السرعة:
|
# Spin the motor forward, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
spin_for#
يؤدي الأمر spin_for spin_for الدوران قبل تنفيذ السطر التالي من التعليمات البرمجية.
Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)
حدود |
وصف |
|---|---|
|
اتجاه دوران المحرك أو مجموعة المحركات: |
|
المسافة التي يدورها المحرك أو مجموعة المحركات. يمكن أن تكون هذه القيمة |
|
اختياري. وحدة المسافة: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
اختياري. وحدة السرعة:
|
|
اختياري.
|
# 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 يقوم بتدوير محرك أو مجموعة محركات إلى موضع محدد.
A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. At the beginning of a project, the motor or motor group position is set to 0 degrees. The motor or motor group position can also be set using the set_position method.
قيم الموضع مطلقة. وهذا يعني أن اتجاه الدوران يعتمد على الموضع الحالي للمحرك أو مجموعة المحركات.
على سبيل المثال، إذا بدأ المحرك أو مجموعة المحركات من الصفر درجة ثم دار إلى موضع 720 درجة، فسيدور دورتين للأمام. وإذا دار بعد ذلك إلى موضع 360 درجة، فسيدور دورة واحدة للخلف، لأن 360 أقل من 720.
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
حدود |
وصف |
|---|---|
|
قيمة الموضع الذي سيدور إليه المحرك أو مجموعة المحركات. يمكن أن تكون هذه القيمة عددًا |
|
وحدة تحديد الموضع: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
اختياري. وحدة السرعة:
|
|
اختياري.
|
# 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 يوقف دوران المحرك أو مجموعة المحركات.
Usage:
motor_1.stop(mode)
حدود |
وصف |
|---|---|
|
اختياري. كيفية توقف المحرك أو مجموعة المحركات:
|
# 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)
المتحولون#
set_velocity#
يُحدد set_velocity سرعة دوران المحرك أو مجموعة المحركات. كلما زادت النسبة المئوية، زادت سرعة دوران المحرك أو مجموعة المحركات، وكلما انخفضت النسبة المئوية، قلت سرعة دوران المحرك أو مجموعة المحركات.
يبدأ كل مشروع بدوران كل محرك أو مجموعة محركات بسرعة 50% بشكل افتراضي.
ملاحظة: السرعة العالية تجعل المحرك أو مجموعة المحركات تدور بسرعة أكبر، ولكنها قد تكون أقل دقة. السرعة المنخفضة تجعل المحرك أو مجموعة المحركات تدور ببطء، ولكنها قد تكون أكثر دقة.
Usage:
motor_1.set_velocity(velocity, units)
حدود |
وصف |
|---|---|
|
The velocity to spin with from 0% to 100% when using |
|
اختياري. وحدة السرعة:
|
# 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#
يوضح عزم الدوران مدى قوة الدفع أو السحب التي يمكن أن يقوم بها محرك أو مجموعة محركات أثناء دورانها.
set_max_torque يحدد أقصى عزم دوران يُسمح للمحرك أو مجموعة المحركات باستخدامه.
نسبة أعلى تسمح للمحرك أو مجموعة المحركات بالدفع بقوة أكبر، كما هو الحال عند رفع جسم ثقيل. أما نسبة أقل فتحدّ من قوة الدفع التي يمكن للمحرك أو مجموعة المحركات القيام بها. وهذا يساعد على حماية الروبوت في حال تعطل المحرك أو مجموعة المحركات أو وصولها إلى أقصى مدى يمكنها التحرك فيه.
يبدأ كل مشروع بعزم دوران كل محرك أو مجموعة محركات بنسبة 50% بشكل افتراضي.
Usage:
motor_1.set_max_torque(value, units)
حدود |
وصف |
|---|---|
|
أقصى عزم دوران يمكن للمحرك أو مجموعة المحركات استخدامه. يمكن أن يكون هذا قيمة صحيحة |
|
وحدة عزم الدوران:
|
# 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#
موضع المحرك أو مجموعة المحركات هو مقدار دورانه، ويُقاس بـ DEGREES أو TURNSالدورة الواحدة تساوي 360 درجة. يُغيّر set_position موضع المحرك أو مجموعة المحركات الحالي إلى قيمة جديدة.
على سبيل المثال، إذا دار محرك أو مجموعة محركات بزاوية 180 درجة، فإن ضبط الموضع على 0 درجة سيعيد ضبط هذا الموضع من 180 إلى 0 درجة. بعد ذلك، يمكن للمحرك أو مجموعة المحركات الدوران إلى مواضع بناءً على هذه القيمة الجديدة.
Usage:
motor_1.set_position(position, units)
حدود |
وصف |
|---|---|
|
قيمة الموضع المراد ضبطها للمحرك أو مجموعة المحركات. يمكن أن تكون هذه القيمة عددًا |
|
وحدة تحديد الموضع: |
# Position the motor at the
# new 0 degrees
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0)
set_stopping#
set_stopping يحدد كيفية توقف المحرك أو مجموعة المحركات عن الحركة: عن طريق الكبح أو الانزلاق أو الثبات.
Usage:
motor_1.set_stopping(mode)
حدود |
وصف |
|---|---|
|
كيفية توقف المحرك أو مجموعة المحركات:
|
# 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 المدة الزمنية التي سيحاول فيها المحرك أو مجموعة المحركات إكمال الحركة. إذا لم يتمكن المحرك أو مجموعة المحركات من إكمال الحركة خلال هذه المدة، فسيتوقف عن المحاولة وينتقل إلى السطر التالي من التعليمات البرمجية. هذا يمنع المحرك أو مجموعة المحركات من التوقف أثناء الحركة.
Usage:
motor_1.set_timeout(value, units)
حدود |
وصف |
|---|---|
|
مقدار الوقت الذي يمكن للمحرك أو مجموعة المحركات فيه محاولة إنهاء الحركة. يمكن أن يكون هذا عددًا صحيحًا موجبًا |
|
اختياري. وحدة الزمن:
|
# 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 changes whether a motor’s spin direction is reversed. This method works the same as setting the reverse parameter to True when constructing a Motor.
ملاحظة: هذه الطريقة ستعمل فقط مع محرك واحد وليس مع مجموعة محركات.
Usage:
motor_1.set_reversed(value)
حدود |
وصف |
|---|---|
|
ما إذا كان اتجاه دوران المحرك معكوسًا:
|
# 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 يغير الموضع الحالي للمحرك أو مجموعة المحركات إلى 0.
Usage:
motor_1.reset_position()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
# 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)
المحصلون#
position#
A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. position returns the motor or motor group’s current position.
في بداية المشروع، يتم ضبط موضع المحرك أو مجموعة المحركات على صفر درجة. إذا دار المحرك أو مجموعة المحركات دورة كاملة للأمام، فسيكون الموضع 360 درجة أو دورة واحدة. أما إذا دار المحرك أو مجموعة المحركات في الاتجاه المعاكس، فسيكون الموضع سالباً.
Usage:
motor_1.position(units)
حدود |
وصف |
|---|---|
|
اختياري. الوحدة التي يتم بها إعادة وضع المحرك أو مجموعة المحركات في: |
# 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 تُحددان مدى سرعة دوران المحرك أو مجموعة المحركات.
تشير القيمة الموجبة إلى أن المحرك أو مجموعة المحركات تدور للأمام. وتشير القيمة السالبة إلى أنها تدور للخلف.
Usage:
motor_1.velocity(units)
حدود |
وصف |
|---|---|
|
اختياري. وحدة السرعة المراد إرجاعها:
|
current#
current تُرجع مقدار التيار الكهربائي الذي يستخدمه المحرك أو مجموعة المحركات، مقاسًا بالأمبير من 0.0 إلى 1.2 أمبير. التيار هو كمية الكهرباء المتدفقة عبر المحرك أو مجموعة المحركات.
تشير قيمة التيار الأعلى إلى أن المحرك أو مجموعة المحركات تستهلك تيارًا كهربائيًا أكبر. قد يحدث هذا عندما يرفع المحرك أو مجموعة المحركات شيئًا ثقيلًا، أو يدفع جسمًا ما، أو يحاول التحرك وهو عالق.
يمكن استخدام هذا للتحقق مما إذا كان المحرك أو مجموعة المحركات يواجه صعوبة أثناء الحركة. إذا ظل التيار مرتفعًا، فقد يسخن المحرك أو يستهلك الطاقة بكفاءة أقل.
Usage:
motor_1.current(units)
حدود |
وصف |
|---|---|
|
اختياري. الوحدة الحالية المراد إرجاعها:
|
is_done#
تُشير القيمة المنطقية is_done للتحكم في توقيت العمليات الأخرى بناءً على حركة المحرك.
True— انتهى المحرك أو مجموعة المحركات من الحركة.False— لا يزال المحرك أو مجموعة المحركات يتحرك.
تعمل هذه الطريقة جنبًا إلى جنب مع طرق الحركة التالية التي تحتوي على المعلمة wait : spin_for و spin_to_position.
Usage:
motor_1.is_done()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
is_spinning#
تُشير القيمة المنطقية is_spinning . ويمكن استخدام هذه القيمة للتحكم في توقيت سلوكيات أخرى بناءً على حركة المحرك.
True— المحرك أو مجموعة المحركات تدور.False— المحرك أو مجموعة المحركات لا تدور.
تعمل هذه الطريقة جنبًا إلى جنب مع طرق الحركة التالية التي تحتوي على المعلمة wait : spin_for و spin_to_position.
Usage:
motor_1.is_spinning()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
direction#
الاتجاه direction يُعيد الاتجاه الحالي الذي يدور فيه المحرك أو مجموعة المحركات.
FORWARDREVERSE
Usage:
motor_1.direction()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
power#
يُظهر الخيار power مقدار الطاقة التي يستهلكها المحرك أو مجموعة المحركات بالواط. أما الخيار power فيُظهر سرعة استهلاك المحرك أو مجموعة المحركات للطاقة.
تشير قيمة الطاقة الأعلى إلى أن المحرك أو مجموعة المحركات تستهلك الطاقة بسرعة أكبر. قد يحدث هذا عندما يرفع المحرك أو مجموعة المحركات شيئًا ثقيلًا، أو يدفع جسمًا ما، أو يحاول التحرك وهو عالق.
يمكن استخدام هذا لمقارنة الحركات أو التحقق مما إذا كان المحرك أو مجموعة المحركات يعاني من صعوبة. إذا ظلت الطاقة عالية، فقد يسخن المحرك أو يستخدم الطاقة بكفاءة أقل.
Usage:
motor_1.power()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
torque#
يوضح عزم الدوران مدى قوة دوران المحرك أو مجموعة المحركات، سواء باللف أو الدفع أو السحب.
torque يُظهر مقدار عزم الدوران الذي يستخدمه المحرك أو مجموعة المحركات.
تشير قيمة عزم الدوران الأعلى إلى أن المحرك أو مجموعة المحركات تبذل جهدًا أكبر في الدفع أو السحب. وقد يحدث هذا عندما يرفع المحرك أو مجموعة المحركات شيئًا ثقيلًا، أو يدفع جسمًا ما، أو يحاول التحرك وهو عالق.
يمكن استخدام هذا للتحقق مما إذا كان المحرك أو مجموعة المحركات يعاني من صعوبة أو لمقارنة مقدار الدفع الذي تحتاجه الحركات المختلفة.
لضبط عزم دوران محرك أو مجموعة محركات، استخدم set_max_torque.
Usage:
motor_1.torque(units)
حدود |
وصف |
|---|---|
|
وحدة عزم الدوران المطلوب إرجاعها:
|
efficiency#
efficiency تُظهر مدى كفاءة المحرك أو مجموعة المحركات في استخدام الطاقة، كنسبة مئوية من 0% إلى 100%.
تُشير الكفاءة إلى مقدار الطاقة المُستخدمة من المحرك أو مجموعة المحركات في الحركة. فكلما ارتفعت قيمة الكفاءة، زادت الطاقة المُستخدمة في الحركة. أما انخفاض قيمة الكفاءة فيحدث عندما يبذل المحرك أو مجموعة المحركات جهدًا كبيرًا دون أن يتحرك كثيرًا، كما في حالة تعطل المحرك أو دفعه لجسم ما.
يمكن استخدام هذا لمقارنة الحركات أو التحقق مما إذا كان المحرك أو مجموعة المحركات يهدر الطاقة بدلاً من استخدامها للحركة.
Usage:
motor_1.efficiency()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
temperature#
temperature تُرجع درجة حرارة المحرك أو مجموعة المحركات.
تُشير درجة حرارة المحرك إلى مدى سخونة المحرك أو مجموعة المحركات. ارتفاع درجة الحرارة يعني أن المحرك أو مجموعة المحركات يسخن أثناء التشغيل. يجب أن تبقى درجة حرارة المحرك أقل من 55 درجة مئوية لضمان استمرار عمله بكامل طاقته.
إذا ارتفعت درجة حرارة المحرك أو مجموعة المحركات بشكل مفرط، فإنه سيخفض الحد الأقصى للتيار لحماية نفسه. عند 70 درجة مئوية، سيتوقف المحرك عن العمل حتى يبرد.
يمكن استخدام هذا للتحقق مما إذا كان المحرك أو مجموعة المحركات يسخن بشكل مفرط أثناء الحركات المتكررة أو الجري لمسافات طويلة أو عندما يدفع ضد جسم ما.
Usage:
motor_1.temperature(units)
حدود |
وصف |
|---|---|
|
اختياري. وحدة درجة الحرارة المراد إرجاعها:
|
count#
count تُرجع عدد المحركات في مجموعة المحركات.
ملاحظة: هذه الطريقة ستعمل فقط مع مجموعة المحركات وليس مع محرك واحد.
Usage:
motor_group_1.count()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
get_timeout#
get_timeout تُرجع المهلة الحالية للمحرك أو مجموعة المحركات بالمللي ثانية.
ملاحظة: هذه الطريقة ستعمل فقط مع محرك واحد وليس مع مجموعة محركات.
Usage:
motor_1.get_timeout()
حدود |
وصف |
|---|---|
لا تحتوي هذه الطريقة على أي معلمات. |
المُنشئون#
Constructors are used to manually create Motor and MotorGroup objects outside of the Devices window.
Motor#
Motor يُنشئ محركًا.
Usage:
motor_1 = Motor(smartport, gears, reverse)
المعلمة |
وصف |
|---|---|
|
المنفذ الذكي الذي يتصل به المحرك، مكتوبًا على النحو التالي: |
|
اختياري. نسبة تروس المحرك:
|
|
اختياري. يحدد ما إذا كان اتجاه دوران المحرك معكوسًا:
|
# Create a reversed motor
motor_1 = Motor(Ports.PORT1, 1.0, True)
Motor Group#
MotorGroup يُنشئ مجموعة محركات.
Usage:
motor_group_1 = MotorGroup(motors)
المعلمة |
وصف |
|---|---|
|
أسماء الكائنات التي تم إنشاؤها مسبقًا |
# 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)