موتور ومجموعة المحركات#

مقدمة#

Motors and motor groups control how parts of a robot move. A motor object controls one configured IQ Smart Motor, while a motor_group object 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.

يتم تكوين كل محرك أو مجموعة محركات في نافذة الأجهزة. قد تختلف أسماء المحركات ومجموعات المحركات باختلاف الإصدار. تستخدم هذه الصفحة الأسماء Motor1 و MotorGroup1 كمثال. استبدلها بالأسماء التي قمت بتكوينها حسب الحاجة.

محرك VEX IQ يوضح اتجاه الدوران للأمام المشار إليه بعلامة زائد وسهم يشير إلى أنه يدور إلى اليسار، أو عكس اتجاه عقارب الساعة. محرك VEX IQ يوضح الاتجاه العكسي المشار إليه بعلامة ناقص وسهم يشير إلى أنه يدور إلى اليمين، أو في اتجاه عقارب الساعة.

افتراضياً، يشير forward إلى دوران المحرك عكس اتجاه عقارب الساعة، بينما يشير reverse إلى دورانه مع اتجاه عقارب الساعة. إذا تم ضبط المحرك على الدوران العكسي، فسيتم عكس هذه الاتجاهات.

محرك#

Class Constructors#

1 — يُنشئ كائن محرك motor لمحرك IQ الذكي المتصل بالمنفذ الذكي المحدد. يستخدم المحرك تلقائيًا إعداد التروس الداخلي gearSetting.

motor(
  int32_t index );

2 — يُنشئ كائن محرك motor ويُمكنه عكس اتجاهه. يستخدم المحرك تلقائيًا إعداد التروس الداخلي gearSetting.

motor(
 int32_t index,
 bool    reverse );

3 — يقوم بإنشاء كائن محرك motor على المنفذ الذكي المحدد مع إعداد التروس gearSetting.

motor(
 int32_t     index,
 gearSetting gears );

4 — يقوم بإنشاء كائن محرك motor على المنفذ الذكي المحدد مع إعداد التروس gearSetting والاتجاه العكسي الاختياري.

motor(
 int32_t     index,
 gearSetting gears,
 bool        reverse );

Class Destructor#

يقوم بتدمير الكائن motor ويحرر الموارد المرتبطة به.

~motor();

Parameters#

المعلمة

يكتب

وصف

index

int32_t

المنفذ الذكي الذي يتصل به المحرك، مكتوبًا على النحو التالي: PORTx، حيث x هو رقم المنفذ (على سبيل المثال، PORT1).

reverse

bool

يُحدد ما إذا كان اتجاه دوران المحرك معكوسًا:

  • false (افتراضي) — لا يعكس اتجاه دوران المحرك.
  • true — يعكس اتجاه دوران المحرك.

gears

gearSetting

يحدد نسبة تروس خرطوشة التروس الداخلية.

  • ratio1_1 — نسبة تروس 1:
  • ratio2_1 — نسبة تروس 2:
  • ratio3_1 — نسبة تروس 3:1

Notes#

  • يجب أن تتطابق إعدادات التروس مع الخرطوشة الفعلية المثبتة في المحرك.

Example#

// Create the motor instance in Smart Port 1
motor LeftMotor = motor(PORT1);

// Creates the motor instance with different settings
motor RightMotor = motor(
  PORT2,      // Smart Port 2
  ratio2_1,  // Gear ratio is 2:1
  true);

مجموعة موتور#

Class Constructors#

motor_group( motor &m1, Args&... m2 );

Class Destructor#

يقوم بتدمير الكائن motor_group وتحرير الموارد المرتبطة به.

~motor_group();

Parameters#

المعلمة

يكتب

وصف

m1

motor &

أول محرك تمت إضافته إلى المجموعة.

m2

motor &

تمت إضافة محركات إضافية إلى المجموعة. الحد الأقصى هو أربعة محركات في مجموعة محركات واحدة.

Example#

// Create individual motor instances
motor LeftMotor  = motor(PORT1);
motor RightMotor = motor(PORT2);

// Create a motor group with both motors
motor_group DriveMotors = motor_group(LeftMotor, RightMotor);

الدوال الأعضاء#

توجد طرق عديدة لبرمجة المحركات ومجموعات المحركات. فيما يلي قائمة بجميع الدوال الأعضاء في مجموعة المحركات : motor and motor_group 3:

الإجراءات — إيقاف وتدوير المحركات ومجموعات المحركات.

  • spin — يدور محرك أو مجموعة محركات للأمام أو للخلف إلى الأبد.

  • spinFor — يدور محركًا أو مجموعة محركات لمسافة محددة أو لفترة زمنية محددة.

  • spinToPosition — يقوم بتدوير محرك أو مجموعة محركات إلى موضع محدد.

  • stop — يوقف محركًا أو مجموعة محركات من الدوران.

المُعدِّلات — اضبط إعدادات المحرك ومجموعة المحركات.

  • setVelocity — يخبر المحرك أو مجموعة المحركات بمدى سرعة الدوران.

  • setMaxTorque — يحدد مدى قوة الدفع المسموح بها للمحرك أو مجموعة المحركات أثناء الدوران.

  • setPosition — يغير الموضع الحالي للمحرك أو مجموعة المحركات إلى قيمة جديدة.

  • setStopping — يحدد كيفية توقف المحرك أو مجموعة المحركات عن الحركة: عن طريق الكبح أو الانزلاق أو التثبيت.

  • setTimeout — يحدد مقدار الوقت الذي سيحاول فيه المحرك أو مجموعة المحركات إنهاء الحركة.

أجهزة الاستشعار — تحقق من حالة المحرك ومجموعة المحركات.

  • isDone — تُرجع ما إذا كان المحرك أو مجموعة المحركات قد انتهى من الحركة، كقيمة منطقية.

  • isSpinning — تُرجع ما إذا كان المحرك أو مجموعة المحركات يدور، كقيمة منطقية.

  • position — يعيد الموضع الحالي للمحرك أو مجموعة المحركات.

  • velocity — تُرجع مدى سرعة دوران المحرك أو مجموعة المحركات.

  • current — إرجاع مقدار التيار الكهربائي الذي يستخدمه المحرك أو مجموعة المحركات.

  • power — تُرجع مقدار الطاقة التي يستخدمها المحرك أو مجموعة المحركات.

  • torque — تُرجع مقدار عزم الدوران الذي يستخدمه المحرك أو مجموعة المحركات.

  • efficiency — تُرجع مدى كفاءة المحرك أو مجموعة المحركات في استخدام الطاقة.

  • temperature — تُرجع درجة حرارة المحرك أو مجموعة المحركات.

  • voltage — يعيد الجهد الكهربائي المزود للمحرك أو مجموعة المحركات.

  • direction — يعيد اتجاه دوران المحرك أو مجموعة المحركات.

  • installed — إرجاع ما إذا كان المحرك أو مجموعة المحركات متصلة بالدماغ.

  • count — تُرجع عدد المحركات في مجموعة المحركات.

قبل استدعاء أي من الدوال الأعضاء motor أو motor_group ، يجب إنشاء مثيل، كما هو موضح أدناه:

/* This constructor is required when using VS Code.
Motor and Motor Group configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create the motor instance in Smart Port 1
motor Motor1 = motor(PORT1);

الإجراءات#

spin#

spin المحرك أو مجموعة المحركات للأمام أو للخلف باستمرار. سيستمر المحرك أو مجموعة المحركات في الدوران حتى يتم إعطاؤه إجراءً آخر، مثل الدوران في اتجاه مختلف أو التوقف.

Available Functions

1 — يقوم بتدوير المحرك أو مجموعة المحركات باستخدام سرعة المحرك المُهيأة حاليًا.

void spin(
 directionType dir );

2 — يقوم بتدوير المحرك أو مجموعة المحركات بالسرعة المحددة.

void spin(
 directionType dir,
 double        velocity,
 velocityUnits units );

3 — يقوم بتدوير المحرك أو مجموعة المحركات باستخدام الجهد المحدد.

void spin(
 directionType dir,
 double        voltage,
 voltageUnits  units );

Parameters

المعلمة

يكتب

وصف

dir

directionType

اتجاه دوران المحرك أو مجموعة المحركات: forward أو reverse.

velocity

double

سرعة الدوران من 0% إلى 100% عند استخدام percent.

units

velocityUnits

The unit used to represent velocity:

  • percent / pct — percent
  • rpm — rotations per minute
  • dps — degrees per second

voltage

double

الجهد المطلوب للدوران. القيمة السالبة تعني الدوران في الاتجاه المعاكس للاتجاه المعطى dir.

units

voltageUnits

الوحدة المستخدمة لتمثيل الجهد:

  • volt — فولت
  • voltageUnits::mV — ملي فولت

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • هذه الوظيفة لا تتطلب انتظارًا، وسيستمر المشروع في التنفيذ فورًا بعد الاستدعاء.

  • سيستمر المحرك أو مجموعة المحركات في الدوران حتى يتم استدعاء stop أو يتم تنفيذ وظيفة حركة أخرى.

  • لا تنطبق وظائف مثل isDone و isSpinning على spin، لأنها لا تستخدم الحركة القائمة على الهدف (لا تحتوي على rotation أو time معلمة).

Examples
// Spin forward, then stop
Motor1.spin(forward);
wait(1, seconds);
Motor1.stop();

spinFor#

يُشغّل الأمر spinFor محركًا أو مجموعة محركات لمسافة أو مدة زمنية محددة. ويكون الدوران مرتبطًا بالموضع الحالي للمحرك أو مجموعة المحركات. افتراضيًا، ينتظر البرنامج حتى ينتهي المحرك أو مجموعة المحركات من الدوران قبل تنفيذ السطر التالي من التعليمات البرمجية.

Available Functions

1 — يدور لمسافة محددة بالسرعة المحددة في استدعاء الدالة.

bool spinFor(
 double        rotation,
 rotationUnits units,
 double        velocity,
 velocityUnits units_v,
 bool          waitForCompletion = true );

2 — يقبل معلمة اتجاه ويدور لمسافة محددة بالسرعة المحددة في استدعاء الدالة.

bool spinFor(
 directionType dir,
 double        rotation,
 rotationUnits units,
 double        velocity,
 velocityUnits units_v,
 bool          waitForCompletion = true );

3 — يدور لمسافة محددة باستخدام سرعة المحرك المُهيأة حاليًا.

bool spinFor(
 double        rotation,
 rotationUnits units,
 bool          waitForCompletion = true );

4 — يقبل معلمة اتجاه ويدور لمسافة محددة باستخدام سرعة المحرك المُكوّنة حاليًا.

bool spinFor(
 directionType dir,
 double        rotation,
 rotationUnits units,
 bool          waitForCompletion = true );

5 — يدور لفترة زمنية محددة بالسرعة المحددة في استدعاء الدالة.

bool spinFor(
 double        time,
 timeUnits     units,
 double        velocity,
 velocityUnits units_v );

6 — يقبل معلمة اتجاه ويدور لفترة زمنية محددة بالسرعة المحددة في استدعاء الدالة.

bool spinFor(
 directionType dir,
 double        time,
 timeUnits     units,
 double        velocity,
 velocityUnits units_v );

7 — يدور لفترة زمنية محددة باستخدام سرعة المحرك المُهيأة حاليًا.

bool spinFor(
 double    time,
 timeUnits units );

8 — يقبل معلمة اتجاه ويدور لفترة زمنية محددة باستخدام سرعة المحرك المُكوّنة حاليًا.

bool spinFor(
 directionType dir,
 double        time,
 timeUnits     units );

Parameters

المعلمة

يكتب

وصف

dir

directionType

اتجاه دوران المحرك أو مجموعة المحركات: forward أو reverse.

rotation

double

المسافة التي يدورها المحرك أو مجموعة المحركات.

units

rotationUnits

وحدة الدوران:

  • deg / degrees — درجات
  • turns / rev — دورات

time

double

مقدار الوقت الذي يدور فيه المحرك أو مجموعة المحركات.

units

timeUnits

The unit of time:

  • seconds / sec — seconds
  • msec — milliseconds

velocity

double

سرعة الدوران من 0% إلى 100% عند استخدام percent.

units_v

velocityUnits

الوحدة المستخدمة لتمثيل السرعة velocity

  • percent pct — بالمئة
  • rpm — دورات في الدقيقة
  • dps — درجة في الثانية

waitForCompletion

bool

​

  • true (افتراضي) — يجعل المشروع ينتظر حتى ينتهي المحرك أو مجموعة المحركات من الدوران قبل تشغيل سطر التعليمات البرمجية التالي.
  • false — يجعل سطر التعليمات البرمجية التالي يُنفذ فورًا.

Return Values

تُرجع قيمة منطقية تُظهر ما إذا كان المحرك أو مجموعة المحركات قد وصل إلى القيمة المستهدفة.

  • true — The motor or motor group reached the target value.
  • false — The motor or motor group was not able to reach the target value or waitForCompletion is set to false.
Notes
  • سيؤدي تنفيذ وظيفة حركة محرك أخرى (مثل spin أو stop) أثناء تنفيذ spinFor إلى مقاطعة الحركة الحالية.

  • لأن spinFor يعتمد على الهدف (يستخدم rotation أو time معلمة)، فإن وظائف مثل isDone و isSpinning تعمل مع spinFor.

Examples
// Spin 1 turn fast, then 1 turn slow
Motor1.spinFor(forward, 1, turns, true);
Motor1.spinFor(reverse, 1, turns, 20, velocityUnits::pct, true);

spinToPosition#

spinToPosition يقوم بتدوير محرك أو مجموعة محركات إلى موضع محدد.

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 setPosition function.

قيم الموضع مطلقة. وهذا يعني أن اتجاه الدوران يعتمد على الموضع الحالي للمحرك أو مجموعة المحركات.

على سبيل المثال، إذا بدأ المحرك أو مجموعة المحركات من الصفر درجة ثم دار إلى موضع 720 درجة، فسيدور دورتين للأمام. وإذا دار بعد ذلك إلى موضع 360 درجة، فسيدور دورة واحدة للخلف، لأن 360 أقل من 720.

Available Functions

1 — يدور إلى موضع محدد بالسرعة المحددة في استدعاء الدالة.

bool spinToPosition(
 double        rotation,
 rotationUnits units,
 double        velocity,
 velocityUnits units_v,
 bool          waitForCompletion = true );

2 — يدور إلى موضع محدد باستخدام سرعة المحرك المُهيأة حاليًا.

bool spinToPosition(
 double        rotation,
 rotationUnits units,
 bool          waitForCompletion = true );

Parameters

المعلمة

يكتب

وصف

rotation

double

قيمة الموضع الذي سيدور إليه المحرك أو مجموعة المحركات.

units

rotationUnits

وحدة الدوران:

  • deg / degrees — درجات
  • turns / rev — دورات

velocity

double

سرعة الدوران من 0% إلى 100% عند استخدام percent.

units_v

velocityUnits

The unit used to represent velocity:

  • pct — percent
  • rpm — rotations per minute
  • dps — degrees per second

waitForCompletion

bool

​

  • true (افتراضي) — يجعل المشروع ينتظر حتى ينتهي المحرك أو مجموعة المحركات من الدوران قبل تشغيل سطر التعليمات البرمجية التالي.
  • false — يجعل سطر التعليمات البرمجية التالي يُنفذ فورًا.

Return Values

تُرجع قيمة منطقية تُظهر ما إذا كان المحرك أو مجموعة المحركات قد بدأ الحركة المطلوبة القائمة على الهدف.

  • true — The motor or motor group begins the requested target-based movement.
  • false — The call fails or waitForCompletion is set to false.
Notes
  • سيؤدي تنفيذ وظيفة حركة محرك أخرى (مثل spin أو spinFor) أثناء تنفيذ spinToPosition إلى مقاطعة الحركة الحالية.

  • لأن spinToPosition يعتمد على الهدف (يستخدم معلمة دوران rotation )، فإن وظائف مثل isDone و isSpinning تعمل مع spinToPosition.

Examples
// Spin forward, then go to 90°
Motor1.spin(forward);
wait(1, seconds);
Motor1.spinToPosition(90, degrees);

stop#

stop يوقف دوران المحرك أو مجموعة المحركات.

Available Functions

1 — يوقف المحرك أو مجموعة المحركات باستخدام وضع الفرامل المُكوّن حاليًا.

void stop();

2 — يوقف المحرك أو مجموعة المحركات باستخدام وضع الفرامل المقدم في استدعاء الوظيفة.

void stop(
  brakeType mode );

Parameters

المعلمة

يكتب

وصف

mode

brakeType

اختياري. كيفية توقف المحرك أو مجموعة المحركات:

  • coast — التباطؤ حتى التوقف.
  • brake — التوقف فورًا.
  • hold — التوقف فورًا مع تثبيت وضع المحرك أو مجموعة المحركات.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يؤدي استدعاء الأمر stop إلى إيقاف أي حركة حالية للمحرك أو مجموعة المحركات على الفور.

  • إذا لم يتم تحديد وضع الفرامل، فإن المحرك أو مجموعة المحركات تستخدم وضع الفرامل المُكوّن حاليًا.

  • stop يقاطع أي حركة نشطة تعتمد على الهدف (مثل spinFor أو spinToPosition).

Examples
// Spin and coast to a stop
Motor1.setVelocity(100, percent);
Motor1.spin(forward);
wait(1, seconds);
Motor1.stop(coast);

المتحولون#

setVelocity#

يُحدد setVelocity سرعة دوران المحرك أو مجموعة المحركات. كلما زادت النسبة المئوية، زادت سرعة دوران المحرك أو مجموعة المحركات، وكلما انخفضت النسبة المئوية، قلت سرعة دوران المحرك أو مجموعة المحركات.

يبدأ كل مشروع بدوران كل محرك أو مجموعة محركات بسرعة 50% بشكل افتراضي.

ملاحظة: السرعة العالية تجعل المحرك أو مجموعة المحركات تدور بسرعة أكبر، ولكنها قد تكون أقل دقة. السرعة المنخفضة تجعل المحرك أو مجموعة المحركات تدور ببطء، ولكنها قد تكون أكثر دقة.

Available Functions
void setVelocity(
    double        velocity,
    velocityUnits units );

Parameters

المعلمة

يكتب

وصف

velocity

double

سرعة الدوران من 0% إلى 100% عند استخدام percent.

units

velocityUnits

الوحدة المستخدمة لتمثيل السرعة velocity

  • percent pct — بالمئة
  • rpm — دورات في الدقيقة
  • dps — درجة في الثانية

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • أي وظيفة حركة محرك لاحقة (مثل spin، spinFor، أو spinToPosition) التي لا تحدد السرعة بشكل صريح ستستخدم هذه القيمة.

Examples
// Try default, then slow, then fast
Motor1.spinFor(forward, 180, degrees);
wait(1, seconds);
Motor1.setVelocity(20, percent);
Motor1.spinFor(reverse, 180, degrees);
wait(1, seconds);
Motor1.setVelocity(100, percent);
Motor1.spinFor(forward, 180, degrees);

setMaxTorque#

يوضح عزم الدوران مدى قوة الدفع أو السحب التي يمكن أن يقوم بها محرك أو مجموعة محركات أثناء دورانها.

setMaxTorque يحدد أقصى عزم دوران يُسمح للمحرك أو مجموعة المحركات باستخدامه.

نسبة أعلى تسمح للمحرك أو مجموعة المحركات بالدفع بقوة أكبر، كما هو الحال عند رفع جسم ثقيل. أما نسبة أقل فتحدّ من قوة الدفع التي يمكن للمحرك أو مجموعة المحركات القيام بها. وهذا يساعد على حماية الروبوت في حال تعطل المحرك أو مجموعة المحركات أو وصولها إلى أقصى مدى يمكنها التحرك فيه.

يبدأ كل مشروع بعزم دوران كل محرك أو مجموعة محركات بنسبة 50% بشكل افتراضي.

Available Functions

1 — يحدد الحد الأقصى لعزم الدوران كنسبة مئوية من عزم الدوران المقدر للمحرك أو مجموعة المحركات.

void setMaxTorque(
 double       value,
 percentUnits units );

2 — يحدد الحد الأقصى لعزم الدوران باستخدام وحدات عزم الدوران الفيزيائية.

void setMaxTorque(
 double      value,
 torqueUnits units );

3 — يحدد الحد الأقصى لعزم الدوران عن طريق الحد من تيار المحرك.

void setMaxTorque(
 double       value,
 currentUnits units );

Parameters

المعلمة

يكتب

وصف

value

double

أقصى عزم دوران يمكن للمحرك أو مجموعة المحركات استخدامه.

units

percentUnits

يحدد عزم الدوران كنسبة مئوية: percent / pct %، —%

units

torqueUnits

يحدد عزم الدوران بوحدات فيزيائية مثل:

  • Nm — نيوتن متر
  • InLb — بوصة رطل

units

currentUnits

يحدد عزم الدوران عن طريق الحد من تيار المحرك:

  • amp

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • عند استخدام currentUnits، يتم تقييد عزم الدوران عن طريق تقييد مقدار التيار الكهربائي الذي يمكن للمحرك أو مجموعة المحركات استخدامه.

setPosition#

موضع المحرك أو مجموعة المحركات هو مقدار دورانه، ويُقاس بالدرجات degrees أو turns. الدورة الواحدة تساوي 360 درجة. يُغيّر setPosition موضع المحرك أو مجموعة المحركات الحالي إلى قيمة جديدة.

على سبيل المثال، إذا دار محرك أو مجموعة محركات بزاوية 180 درجة، فإن ضبط الموضع على 0 درجة سيعيد ضبط هذا الموضع من 180 إلى 0 درجة. بعد ذلك، يمكن للمحرك أو مجموعة المحركات الدوران إلى مواضع بناءً على هذه القيمة الجديدة.

Available Functions
void setPosition(
    double        value,
    rotationUnits units );

Parameters

المعلمة

يكتب

وصف

value

double

قيمة الموضع المراد ضبطها للمحرك أو مجموعة المحركات.

units

rotationUnits

وحدة الموضع:

  • deg / degrees — درجات
  • turns / rev — دورات

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • بعد استدعاء setPosition، ستستخدم الاستدعاءات اللاحقة لـ spinToPosition الموضع المحدث كمرجع.

setStopping#

setStopping يحدد كيفية توقف المحرك أو مجموعة المحركات عن الحركة: عن طريق الكبح أو الانزلاق أو الثبات.

Available Functions
void setStopping(
  brakeType mode );

Parameters

المعلمة

يكتب

وصف

mode

brakeType

كيفية توقف المحرك أو مجموعة المحركات:

  • brake — يتوقف فورًا.
  • coast — يتباطأ حتى يتوقف.
  • hold — يتوقف فورًا ويثبت وضع المحرك أو مجموعة المحركات.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • أي استدعاء لاحق لـ stop بدون وضع فرامل محدد سيستخدم هذه القيمة.

setTimeout#

يُحدد setTimeout المدة الزمنية التي سيحاول فيها المحرك أو مجموعة المحركات إكمال الحركة. إذا لم يتمكن المحرك أو مجموعة المحركات من إكمال الحركة خلال هذه المدة، فسيتوقف عن المحاولة وينتقل إلى سطر التعليمات البرمجية التالي. هذا يمنع المحرك أو مجموعة المحركات من التوقف أثناء الحركة.

Available Functions
void setTimeout(
    int32_t   time,
    timeUnits units );

Parameters

المعلمة

يكتب

وصف

time

int32_t

مقدار الوقت الذي يمكن للمحرك أو مجموعة المحركات فيه محاولة إنهاء حركة ما. يجب أن يكون هذا عددًا صحيحًا موجبًا.

units

timeUnits

وحدة الزمن:

  • msec — مللي ثانية
  • seconds / sec — ثانية

قيم الإرجاع

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم استخدام مهلة المحرك أو مجموعة المحركات لمنع الحركات التي لا تصل إلى موضعها المستهدف من إيقاف تنفيذ الأوامر الأخرى في المكدس.

  • إذا لم يصل المحرك أو مجموعة المحركات إلى موضعها المستهدف قبل انتهاء المهلة الزمنية، فسيتوقف عن المحاولة وينتقل إلى السطر التالي من التعليمات البرمجية.

  • ينطبق المهلة الزمنية على الوظائف التي لها قيمة مستهدفة مثل spinFor و spinToPosition.

Examples
// Stop a long move after 1 second
Motor1.setTimeout(1, seconds);
Motor1.spinFor(forward, 2, turns);
Motor1.spinToPosition(0, degrees);

المحصلون#

isDone#

تُعيد isDone قيمة منطقية تُشير إلى ما إذا كان المحرك أو مجموعة المحركات قد انتهى من الحركة. ويمكن استخدام هذه القيمة للتحكم في توقيت العمليات الأخرى بناءً على حركة المحرك أو مجموعة المحركات.

  • true — انتهى المحرك أو مجموعة المحركات من الحركة.

  • false — لا يزال المحرك أو مجموعة المحركات يتحرك.

This function works together with the following Motion functions that have the waitForCompletion parameter: spinFor and spinToPosition.

Available Functions
bool isDone();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

تُرجع هذه الدالة ما إذا كان المحرك أو مجموعة المحركات قد انتهى من الحركة، كقيمة منطقية (Boolean).

  • true — The motor or motor group is finished moving.
  • false — The motor or motor group is still moving.
Notes
  • isDone يعمل مع وظائف الحركة التالية التي تحتوي على المعلمة waitForCompletion : spinFor و spinToPosition.

Examples
// Spin forward until the motor is done spinning
Motor1.spinFor(forward, 200, degrees, false);
while (true) {
  if (Motor1.isDone()) {
    Drivetrain.stop();
  } else {
    Drivetrain.drive(forward);
  }
}

isSpinning#

تُعيد الدالة isSpinning isSpinning قيمة منطقية تُشير إلى ما إذا كان المحرك أو مجموعة المحركات يدور أم لا. ويمكن استخدام هذه القيمة للتحكم في توقيت سلوكيات أخرى بناءً على حركة المحرك أو مجموعة المحركات.

  • true — المحرك أو مجموعة المحركات تدور.

  • false — المحرك أو مجموعة المحركات لا تدور.

تعمل هذه الوظيفة جنبًا إلى جنب مع وظائف الحركة مثل spin، spinFor، و spinToPosition.

Available Functions
bool isSpinning();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

تُرجع هذه الدالة ما إذا كان المحرك أو مجموعة المحركات يدور، كقيمة منطقية (Boolean).

  • true — The motor or motor group is spinning.
  • false — The motor or motor group is not spinning.
Notes Examples
// Spin forward until the motor is done spinning
Motor1.spinFor(forward, 200, degrees, false);
while (true) {
  if (Motor1.isSpinning()) {
    Drivetrain.drive(forward);
  } else {
    Drivetrain.stop();
  }
}

position#

موضع المحرك أو مجموعة المحركات هو مقدار دورانه، ويُقاس بالدرجات degrees أو turns. الدورة position للمحرك أو مجموعة المحركات.

في بداية المشروع، يتم ضبط موضع المحرك أو مجموعة المحركات على صفر درجة. إذا دار المحرك أو مجموعة المحركات دورة كاملة للأمام، فسيكون الموضع 360 درجة أو دورة واحدة. أما إذا دار المحرك أو مجموعة المحركات في الاتجاه المعاكس، فسيكون الموضع سالباً.

Available Functions
double position(
  rotationUnits units );

Parameters

المعلمة

يكتب

وصف

units

rotationUnits

The unit to return the motor or motor group position in:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

يُرجع قيمة double تمثل الموضع الحالي للمحرك أو مجموعة المحركات بالوحدات المحددة.

Notes
  • يؤدي استدعاء setPosition إلى تغيير نقطة المرجع لهذه القيمة.

  • تعكس القيمة المُعادة قراءة المشفر الحالية ولا تشير إلى ما إذا كان المحرك أو مجموعة المحركات تتحرك بنشاط.

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع موضع المحرك الأول في المجموعة.

Examples
// Spin, then show the final position
Motor1.spin(forward);
wait(1, seconds);
Motor1.stop();
Brain.Screen.print("Pos: %f", Motor1.position(degrees));

velocity#

السرعة velocity تُحددان مدى سرعة دوران المحرك أو مجموعة المحركات.

تشير القيمة الموجبة إلى أن المحرك أو مجموعة المحركات تدور للأمام. وتشير القيمة السالبة إلى أنها تدور للخلف.

Available Functions
double velocity(
    velocityUnits units );

Parameters

المعلمة

يكتب

وصف

units

velocityUnits

The unit used to represent velocity:

  • percent / pct — percent
  • rpm — rotations per minute
  • dps — degrees per second

Return Values

تُرجع قيمة double تمثل سرعة دوران المحرك أو مجموعة المحركات بالوحدات المحددة.

ملاحظات

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع سرعة المحرك الأول في المجموعة.

current#

يُشير الرقم current

تشير قيمة التيار الأعلى إلى أن المحرك أو مجموعة المحركات تستهلك تيارًا كهربائيًا أكبر. قد يحدث هذا عندما يرفع المحرك أو مجموعة المحركات شيئًا ثقيلًا، أو يدفع جسمًا ما، أو يحاول التحرك وهو عالق.

يمكن استخدام هذا للتحقق مما إذا كان المحرك أو مجموعة المحركات يواجه صعوبة أثناء الحركة. إذا ظل التيار مرتفعًا، فقد يسخن المحرك أو يستهلك الطاقة بكفاءة أقل.

Available Functions

1 — يعيد التيار الكهربائي للمحرك أو مجموعة المحركات بالأمبير.

double current(
  currentUnits units = amp );

2 — يعيد التيار الكهربائي للمحرك أو مجموعة المحركات كنسبة مئوية من الحد الأقصى للتيار المقنن.

double current(
  percentUnits units );

Parameters

المعلمة

يكتب

وصف

units

currentUnits

الوحدة المستخدمة لتمثيل التيار:amp (افتراضي) — أمبير

units

percentUnits

يمثل التيار كنسبة مئوية من الحد الأقصى للتيار المقنن للمحرك:percent / pct %، —%

Return Values

تُرجع قيمة double تمثل مقدار التيار الكهربائي الذي يسحبه المحرك أو مجموعة المحركات بالوحدات المحددة.

ملاحظات

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_groupفإنها تُرجع إجمالي التيار الكهربائي لجميع المحركات في المجموعة.

power#

يُظهر الخيار power مقدار الطاقة التي يستهلكها المحرك أو مجموعة المحركات بالواط. أما الخيار power فيُظهر سرعة استهلاك المحرك أو مجموعة المحركات للطاقة.

تشير قيمة الطاقة الأعلى إلى أن المحرك أو مجموعة المحركات تستهلك الطاقة بسرعة أكبر. قد يحدث هذا عندما يرفع المحرك أو مجموعة المحركات شيئًا ثقيلًا، أو يدفع جسمًا ما، أو يحاول التحرك وهو عالق.

يمكن استخدام هذا لمقارنة الحركات أو التحقق مما إذا كان المحرك أو مجموعة المحركات يعاني من صعوبة. إذا ظلت الطاقة عالية، فقد يسخن المحرك أو يستخدم الطاقة بكفاءة أقل.

Available Functions
double power(
  powerUnits units = watt );

معلمات

المعلمة

يكتب

وصف

units

powerUnits

الوحدة المستخدمة لتمثيل قدرة المحرك:

  • watt (افتراضي) — واط

قيم الإرجاع

تُرجع قيمة double تمثل مقدار الطاقة التي يستخدمها المحرك أو مجموعة المحركات بالواط.

ملاحظات

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع الطاقة الكهربائية للمحرك الأول في المجموعة.

torque#

يوضح عزم الدوران مدى قوة دوران المحرك أو مجموعة المحركات، سواء باللف أو الدفع أو السحب.

torque يُظهر مقدار عزم الدوران الذي يستخدمه المحرك أو مجموعة المحركات.

تشير قيمة عزم الدوران الأعلى إلى أن المحرك أو مجموعة المحركات تبذل جهدًا أكبر في الدفع أو السحب. وقد يحدث هذا عندما يرفع المحرك أو مجموعة المحركات شيئًا ثقيلًا، أو يدفع جسمًا ما، أو يحاول التحرك وهو عالق.

يمكن استخدام هذا للتحقق مما إذا كان المحرك أو مجموعة المحركات يعاني من صعوبة أو لمقارنة مقدار الدفع الذي تحتاجه الحركات المختلفة.

لضبط عزم دوران محرك أو مجموعة محركات، استخدم setMaxTorque.

Available Functions
double torque(
  torqueUnits units = Nm );

معلمات

المعلمة

يكتب

وصف

units

torqueUnits

الوحدة المستخدمة لتمثيل عزم دوران المحرك:

  • Nm (افتراضي) — نيوتن متر
  • InLb — بوصة رطل

قيم الإرجاع

تُرجع قيمة double تمثل مقدار عزم الدوران الذي يستخدمه المحرك أو مجموعة المحركات بالوحدات المحددة.

ملاحظات

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع عزم الدوران الميكانيكي الناتج للمحرك الأول في المجموعة.

efficiency#

efficiency تُظهر مدى كفاءة المحرك أو مجموعة المحركات في استخدام الطاقة، كنسبة مئوية من 0% إلى 100%.

تُشير الكفاءة إلى مقدار الطاقة المُستخدمة من المحرك أو مجموعة المحركات في الحركة. فكلما ارتفعت قيمة الكفاءة، زادت الطاقة المُستخدمة في الحركة. أما انخفاض قيمة الكفاءة فيحدث عندما يبذل المحرك أو مجموعة المحركات جهدًا كبيرًا دون أن يتحرك كثيرًا، كما في حالة تعطل المحرك أو دفعه لجسم ما.

يمكن استخدام هذا لمقارنة الحركات أو التحقق مما إذا كان المحرك أو مجموعة المحركات يهدر الطاقة بدلاً من استخدامها للحركة.

Available Functions
double efficiency(
  percentUnits units = percent );

معلمات

المعلمة

يكتب

وصف

units

percentUnits

The unit used to represent motor efficiency:

  • percent / percentUnits::pct (default) — percent

قيم الإرجاع

Returns a double representing how efficiently the motor or motor group is using power as a percentage.

ملاحظات

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع كفاءة المحرك الأول في المجموعة.

temperature#

temperature تُرجع درجة حرارة المحرك أو مجموعة المحركات.

تُشير درجة حرارة المحرك إلى مدى سخونة المحرك أو مجموعة المحركات. ارتفاع درجة الحرارة يعني أن المحرك أو مجموعة المحركات يسخن أثناء التشغيل. يجب أن تبقى درجة حرارة المحرك أقل 55°C للحفاظ على أدائه الأمثل.

If the motor or motor group gets too hot, it will lower its maximum current to protect itself. At 70°C, a motor will stop running until it cools down.

يمكن استخدام هذا للتحقق مما إذا كان المحرك أو مجموعة المحركات يسخن بشكل مفرط أثناء الحركات المتكررة أو الجري لمسافات طويلة أو عندما يدفع ضد جسم ما.

Available Functions

1 — يعيد درجة حرارة المحرك أو مجموعة المحركات كنسبة مئوية من درجة حرارة التشغيل القصوى.

double temperature(
  percentUnits units = percent );

2 — يعيد درجة حرارة المحرك أو مجموعة المحركات بوحدات درجة الحرارة الفيزيائية.

double temperature(
  temperatureUnits units );

معلمات

المعلمة

يكتب

وصف

units

percentUnits

The unit used to represent motor or motor group temperature as a percentage:

  • percent / percentUnits::pct (default) — percent

units

temperatureUnits

الوحدة المستخدمة لتمثيل درجة حرارة المحرك أو مجموعة المحركات بالدرجات:

  • celsius — درجة مئوية
  • fahrenheit — درجة فهرنهايت

قيم الإرجاع

تُرجع قيمة double تمثل درجة حرارة المحرك أو مجموعة المحركات بالوحدات المحددة.

ملاحظات

  • يتراوح نطاق درجة حرارة التشغيل للمحرك تقريبًا 20°C (68°F) إلى 70°C (158°F)).

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع درجة حرارة المحرك الأول في المجموعة.

voltage#

الجهد voltage يعيد الجهد الكهربائي المزوّد للمحرك أو مجموعة المحركات.

Available Functions
double voltage(
  voltageUnits units = volt );

معلمات

المعلمة

يكتب

وصف

units

voltageUnits

وحدة تمثيل الجهد:

  • volt (افتراضي)
  • voltageUnits::mV — ملي فولت

قيم الإرجاع

تُرجع قيمة double تمثل الجهد الكهربائي المزود للمحرك أو مجموعة المحركات بالوحدات المحددة.

ملاحظات

  • عند استدعاء هذه الدالة على مجموعة المحركات motor_group، فإنها تُرجع الجهد الكهربائي للمحرك الأول في المجموعة.

direction#

الاتجاه direction يُعيد الاتجاه الذي يدور فيه المحرك أو مجموعة المحركات.

Available Functions
directionType direction();

معلمات

لا تأخذ هذه الدالة أي معلمات.

قيم الإرجاع

يُرجع قيمة directionType مما يشير إلى الاتجاه الحالي للمحرك أو مجموعة المحركات:

  • forward — The motor or motor group is spinning forward.
  • reverse — The motor or motor group is spinning in reverse.

installed#

installed يُرجع ما إذا كان المحرك أو مجموعة المحركات متصلة بدماغ IQ (الجيل الأول).

Available Functions
bool installed();

معلمات

لا تأخذ هذه الدالة أي معلمات.

قيم الإرجاع

يُرجع قيمة منطقية bool تشير إلى ما إذا كان المحرك أو مجموعة المحركات متصلة.

  • true — The motor or motor group is connected.
  • false — The motor or motor group is not connected.

count#

count تُرجع عدد المحركات في مجموعة المحركات.

Available Functions
int32_t count();

معلمات

لا تأخذ هذه الدالة أي معلمات.

قيم الإرجاع

Returns an int32_t representing the number of motors in the motor group.