وحدة التحكم#

مقدمة#

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

إجراءات وحدة التحكم المُهيأة هي سلوكيات وحدة التحكم المُحددة في قائمة الأجهزة. استخدم الأمر 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

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

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

المحصلون#

.pressing#

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

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

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

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

الجانب الأمامي والعلوي من وحدة تحكم EXP، مع تمييز عصا التحكم وأزرار الأسهم وأزرار الحركة باللون الأصفر. يوجد على سطح وحدة التحكم عصا تحكم على اليسار واليمين، مع أزرار أسهم لأعلى ولأسفل على اليسار وزرّي A وB على اليمين. في الجزء العلوي من وحدة التحكم، يوجد زرّي L1 وL2 على اليسار وزرّي R1 وR2 على اليمين.

زر

يأمر

buttonA

controller.buttonA.pressing() — الزر A

buttonB

controller.buttonB.pressing() — الزر B

buttonDown

controller.buttonDown.pressing() — زر الأسفل

buttonUp

controller.buttonUp.pressing() — زر أعلى

buttonL1

controller.buttonL1.pressing() — زر L1

buttonL2

controller.buttonL2.pressing() — زر L2

buttonL3

controller.buttonL3.pressing() — زر L3

buttonR1

controller.buttonR1.pressing() — زر R1

buttonR2

controller.buttonR2.pressing() — زر R2

buttonR3

controller.buttonR3.pressing() — زر R3

حدود

وصف

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

# Turn right while L1 is pressed
while True:
    if controller.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

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

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

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

الجانب الأمامي لوحدة التحكم EXP مع تمييز أرقام محاور عصا التحكم باللون الأحمر. على سطح وحدة التحكم، تم تسمية عصا التحكم اليسرى بالمحور 4 للحركة يمينًا ويسارًا والمحور 3 للحركة لأعلى ولأسفل، بينما تم تسمية عصا التحكم اليمنى بالمحور 1 للحركة يمينًا ويسارًا والمحور 2 للحركة لأعلى ولأسفل.

محور

يأمر

axis1

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

axis2

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

axis3

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

axis4

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

حدود

وصف

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

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

.pressed#

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

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

الجانب الأمامي والعلوي من وحدة تحكم EXP، مع تمييز عصا التحكم وأزرار الأسهم وأزرار الحركة باللون الأصفر. يوجد على سطح وحدة التحكم عصا تحكم على اليسار واليمين، مع أزرار أسهم لأعلى ولأسفل على اليسار وزرّي A وB على اليمين. في الجزء العلوي من وحدة التحكم، يوجد زرّي L1 وL2 على اليسار وزرّي R1 وR2 على اليمين.

زر

يأمر

buttonA

controller.buttonA.pressed(callback, arg) — الزر A

buttonB

controller.buttonB.pressed(callback, arg) — زر B

buttonDown

controller.buttonDown.pressed(callback, arg) — زر الأسفل

buttonUp

controller.buttonUp.pressed(callback, arg) — زر أعلى

buttonL1

controller.buttonL1.pressed(callback, arg) — زر L1

buttonL2

controller.buttonL2.pressed(callback, arg) — زر L2

buttonL3

controller.buttonL3.pressed(callback, arg) — زر L3

buttonR1

controller.buttonR1.pressed(callback, arg) — زر R1

buttonR2

controller.buttonR2.pressed(callback, arg) — زر R2

buttonR3

controller.buttonR3.pressed(callback, arg) — زر R3

المعلمة

وصف

callback

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

arg

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

# Drive forward when R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.pressed(drive_forward)

.released#

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

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

الجانب الأمامي والعلوي من وحدة تحكم EXP، مع تمييز عصا التحكم وأزرار الأسهم وأزرار الحركة باللون الأصفر. يوجد على سطح وحدة التحكم عصا تحكم على اليسار واليمين، مع أزرار أسهم لأعلى ولأسفل على اليسار وزرّي A وB على اليمين. في الجزء العلوي من وحدة التحكم، يوجد زرّي L1 وL2 على اليسار وزرّي R1 وR2 على اليمين.

زر

يأمر

buttonA

controller.buttonA.released(callback, arg) — زر A

buttonB

controller.buttonB.released(callback, arg) — زر B

buttonDown

controller.buttonDown.released(callback, arg) — زر الأسفل

buttonUp

controller.buttonUp.released(callback, arg) — زر أعلى

buttonL1

controller.buttonL1.released(callback, arg) — زر L1

buttonL2

controller.buttonL2.released(callback, arg) — زر L2

buttonL3

controller.buttonL3.released(callback, arg) — زر L3

buttonR1

controller.buttonR1.released(callback, arg) — زر R1

buttonR2

controller.buttonR2.released(callback, arg) — زر R2

buttonR3

controller.buttonR3.released(callback, arg) — زر R3

المعلمة

وصف

callback

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

arg

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

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

controller.buttonR1.released(stop_driving)

.changed#

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

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

الجانب الأمامي لوحدة التحكم EXP مع تمييز أرقام محاور عصا التحكم باللون الأحمر. على سطح وحدة التحكم، تم تسمية عصا التحكم اليسرى بالمحور 4 للحركة يمينًا ويسارًا والمحور 3 للحركة لأعلى ولأسفل، بينما تم تسمية عصا التحكم اليمنى بالمحور 1 للحركة يمينًا ويسارًا والمحور 2 للحركة لأعلى ولأسفل.

محور

يأمر

axis1

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

axis2

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

axis3

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

axis4

controller.axis4.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 left joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.changed(beep)

المُنشئون#

Controller#

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

Usage:
Controller()

حدود

وصف

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

# Create a Controller object
my_controller = Controller()