وحدة التحكم#

مقدمة#

يحتوي جهاز التحكم VEX IQ (الجيل الثاني) على أزرار وعصا تحكم مزدوجة. يمكن استخدام وظائف جهاز التحكم للتحقق من ضغطات الأزرار، وقراءة حركة عصا التحكم، وتفعيل أو تعطيل إجراءات جهاز التحكم المُهيأة، أو تشغيل وظائف عند وقوع أحداث معينة في جهاز التحكم.

يمكن توصيل وحدة التحكم IQ (الجيل الثاني) إما بوحدة تحكم IQ (الجيل الثاني) أو وحدة تحكم IQ (الجيل الأول). يجب أن تحتوي وحدة تحكم IQ (الجيل الأول) على راديو ذكي أزرق اللون.

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

تستخدم هذه الصفحة اسم وحدة التحكم controller كمثال. استبدله بالاسم الذي قمت بتكوينه حسب الحاجة.

فيما يلي قائمة بجميع الطرق المتاحة:

الإجراء — تشغيل أو إيقاف إجراءات وحدة التحكم المُهيأة.

  • remote_control_code_enabled — تمكين أو تعطيل إجراءات وحدة التحكم التي تم تكوينها في قائمة الأجهزة.

المُستقبِلات — قراءة حالات الأزرار ومواضع عصا التحكم.

  • .pressing — تُرجع ما إذا كان يتم الضغط على زر معين.

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

الوظائف المستدعاة — تشغيل الوظائف عند تغيير مدخلات وحدة التحكم.

  • .pressed — يقوم بتشغيل وظيفة عند الضغط على زر محدد.

  • .released — يقوم بتشغيل وظيفة عند تحرير زر معين.

  • .changed — يقوم بتشغيل وظيفة عندما يتغير موضع عصا التحكم على طول محور محدد.

المنشئ — إنشاء كائن وحدة تحكم يدويًا.

فعل#

remote_control_code_enabled#

المتغير remote_control_code_enabled هو متغير يُفعّل أو يُعطّل إجراءات وحدة التحكم المُكوّنة في قائمة الأجهزة. تكون إجراءات وحدة التحكم المُكوّنة مُفعّلة افتراضيًا.

Usage:
remote_control_code_enabled = state

قيمة

وصف

True

يُمكّن هذا الخيار الإجراءات المُكوّنة بواسطة وحدة التحكم.

False

يعطل الإجراءات المُكوّنة بواسطة وحدة التحكم.

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

المحصلون#

.pressing#

.pressing تُرجع ما إذا كان زر معين على وحدة التحكم مضغوطًا حاليًا. يجب استدعاء هذه الطريقة على كائن زر معين، مثل controller.buttonEUp.

  • True — يتم الضغط على الزر المحدد.

  • False — الزر المحدد غير مضغوط.

طريقة الاستخدام:
يمكن استخدام أحد عناصر الزر المتاحة مع هذه الطريقة:

صورة أمامية وخلفية لجهاز التحكم IQ من الجيل الثاني، مع تمييز جميع الأزرار باللون الأصفر. يحتوي سطح جهاز التحكم على زرين للتحكم في عصا التحكم في الزاويتين العلويتين اليسرى واليمنى، مع زر E للتحرك لأعلى ولأسفل أسفل عصا التحكم اليسرى، وزر F للتحرك لأعلى ولأسفل أسفل اليمنى. أما في الجزء الخلفي من جهاز التحكم، فيوجد زر L للتحرك لأعلى ولأسفل، وزر R للتحرك لأعلى ولأسفل على الجانبين الأيسر والأيمن على التوالي.

زر

يأمر

buttonEDown

controller.buttonEDown.pressing() — زر E ▼

buttonEUp

controller.buttonEUp.pressing() — زر E ▲

buttonFDown

controller.buttonFDown.pressing() — زر F ▼

buttonFUp

controller.buttonFUp.pressing() — زر F ▲

buttonL3

controller.buttonL3.pressing() — زر عصا التحكم اليسرى، وحدة تحكم IQ (الجيل الثاني) فقط

buttonLDown

controller.buttonLDown.pressing() — زر L ▼

buttonLUp

controller.buttonLUp.pressing() — زر L ▲

buttonR3

controller.buttonR3.pressing() — زر عصا التحكم اليمنى، وحدة تحكم IQ (الجيل الثاني) فقط

buttonRDown

controller.buttonRDown.pressing() — زر R ▼

buttonRUp

controller.buttonRUp.pressing() — زر R ▲

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position تُرجع موضع محور عصا التحكم كرقم من -100 إلى 100.

يجب استدعاء هذه الطريقة على كائن محور محدد، مثل controller.axisA.

طريقة الاستخدام:
يمكن استخدام أحد كائنات المحور المتاحة مع هذه الطريقة:

وحدة تحكم IQ من الجيل الثاني مع تمييز محاور عصا التحكم الأربعة. في عصا التحكم اليسرى، المحور A رأسي والمحور B أفقي. في عصا التحكم اليمنى، المحور C أفقي والمحور D رأسي.

محور

يأمر

axisA

controller.axisA.position() — المحور الرأسي لعصا التحكم اليسرى

axisB

controller.axisB.position() — المحور الأفقي لعصا التحكم اليسرى

axisC

controller.axisC.position() — المحور الأفقي لعصا التحكم اليمنى

axisD

controller.axisD.position() — المحور الرأسي لعصا التحكم اليمنى

حدود

وصف

لا تحتوي هذه الطريقة على أي معلمات.

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

معاودة الاتصال#

.pressed#

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

طريقة الاستخدام:
يمكن استخدام أحد عناصر الزر المتاحة مع هذه الطريقة:

صورة أمامية وخلفية لجهاز التحكم IQ من الجيل الثاني، مع تمييز جميع الأزرار باللون الأصفر. يحتوي سطح جهاز التحكم على زرين للتحكم في عصا التحكم في الزاويتين العلويتين اليسرى واليمنى، مع زر E للتحرك لأعلى ولأسفل أسفل عصا التحكم اليسرى، وزر F للتحرك لأعلى ولأسفل أسفل اليمنى. أما في الجزء الخلفي من جهاز التحكم، فيوجد زر L للتحرك لأعلى ولأسفل، وزر R للتحرك لأعلى ولأسفل على الجانبين الأيسر والأيمن على التوالي.

زر

يأمر

buttonEDown

controller.buttonEDown.pressed(callback, arg) — زر E ▼

buttonEUp

controller.buttonEUp.pressed(callback, arg) — زر E ▲

buttonFDown

controller.buttonFDown.pressed(callback, arg) — زر F ▼

buttonFUp

controller.buttonFUp.pressed(callback, arg) — زر F ▲

buttonL3

controller.buttonL3.pressed(callback, arg) — زر عصا التحكم اليسرى، وحدة تحكم IQ (الجيل الثاني) فقط

buttonLDown

controller.buttonLDown.pressed(callback, arg) — زر L ▼

buttonLUp

controller.buttonLUp.pressed(callback, arg) — زر L ▲

buttonR3

controller.buttonR3.pressed(callback, arg) — زر عصا التحكم اليمنى، وحدة تحكم IQ (الجيل الثاني) فقط

buttonRDown

controller.buttonRDown.pressed(callback, arg) — زر R ▼

buttonRUp

controller.buttonRUp.pressed(callback, arg) — زر R ▲

المعلمة

وصف

callback

A previously defined function to run each time the specified button is pressed.

arg

اختياري. مجموعة تحتوي على الوسائط التي يتم تمريرها إلى دالة الاستدعاء. راجع استخدام الأحداث مع المعلمات لمزيد من المعلومات.

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

.released يقوم بتشغيل وظيفة عند تحرير الزر المحدد. بمجرد استخدامه، سيتم تشغيل الوظيفة تلقائيًا في كل مرة يتم فيها تحرير هذا الزر.

طريقة الاستخدام:
يمكن استخدام أحد عناصر الزر المتاحة مع هذه الطريقة:

صورة أمامية وخلفية لجهاز التحكم IQ من الجيل الثاني، مع تمييز جميع الأزرار باللون الأصفر. يحتوي سطح جهاز التحكم على زرين للتحكم في عصا التحكم في الزاويتين العلويتين اليسرى واليمنى، مع زر E للتحرك لأعلى ولأسفل أسفل عصا التحكم اليسرى، وزر F للتحرك لأعلى ولأسفل أسفل اليمنى. أما في الجزء الخلفي من جهاز التحكم، فيوجد زر L للتحرك لأعلى ولأسفل، وزر R للتحرك لأعلى ولأسفل على الجانبين الأيسر والأيمن على التوالي.

زر

يأمر

buttonEDown

controller.buttonEDown.released(callback, arg) — زر E ▼

buttonEUp

controller.buttonEUp.released(callback, arg) — زر E ▲

buttonFDown

controller.buttonFDown.released(callback, arg) — زر F ▼

buttonFUp

controller.buttonFUp.released(callback, arg) — زر F ▲

buttonL3

controller.buttonL3.released(callback, arg) — زر عصا التحكم اليسرى، وحدة تحكم IQ (الجيل الثاني) فقط

buttonLDown

controller.buttonLDown.released(callback, arg) — زر L ▼

buttonLUp

controller.buttonLUp.released(callback, arg) — زر L ▲

buttonR3

controller.buttonR3.released(callback, arg) — زر عصا التحكم اليمنى، وحدة تحكم IQ (الجيل الثاني) فقط

buttonRDown

controller.buttonRDown.released(callback, arg) — زر R ▼

buttonRUp

controller.buttonRUp.released(callback, arg) — زر R ▲

المعلمة

وصف

callback

A previously defined function to run each time the specified button is released.

arg

اختياري. مجموعة تحتوي على الوسائط التي يتم تمريرها إلى دالة الاستدعاء. راجع استخدام الأحداث مع المعلمات لمزيد من المعلومات.

# Stop driving when E Up is released
def stop_driving():
    drivetrain.stop()

controller.buttonEUp.released(stop_driving)

.changed#

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

طريقة الاستخدام:
يمكن استخدام أحد كائنات المحور المتاحة مع هذه الطريقة:

وحدة تحكم IQ من الجيل الثاني مع تمييز محاور عصا التحكم الأربعة. في عصا التحكم اليسرى، المحور A رأسي والمحور B أفقي. في عصا التحكم اليمنى، المحور C أفقي والمحور D رأسي.

محور

يأمر

axisA

controller.axisA.changed(callback, arg) — المحور الرأسي لعصا التحكم اليسرى

axisB

controller.axisB.changed(callback, arg) — المحور الأفقي لعصا التحكم اليسرى

axisC

controller.axisC.changed(callback, arg) — المحور الأفقي لعصا التحكم اليمنى

axisD

controller.axisD.changed(callback, arg) — المحور الرأسي لعصا التحكم اليمنى

المعلمة

وصف

callback

A previously defined function to run each time the joystick’s position changes along the specified axis.

arg

اختياري. مجموعة تحتوي على الوسائط التي يتم تمريرها إلى دالة الاستدعاء. راجع استخدام الأحداث مع المعلمات لمزيد من المعلومات.

# Play a sound when the right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

المُنشئون#

Controller#

يقوم المتحكم Controller متحكم خارج VEXcode.

Usage:
Controller()

حدود

وصف

لا يحتوي هذا المُنشئ على أي معلمات.

# Create a Controller object
my_controller = Controller()