وحدة التحكم#

مقدمة#

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

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

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

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

الإجراءات — هز وحدة التحكم أو تفعيل/تعطيل إجراءات وحدة التحكم المُهيأة.

  • rumble — يقوم بتشغيل نمط اهتزاز على وحدة التحكم.

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

الشاشة — عرض النصوص والأرقام على شاشة وحدة التحكم.

  • print — يعرض النص أو الأرقام أو قيم المتغيرات على شاشة وحدة التحكم.

  • set_cursor — ينقل المؤشر إلى صف وعمود محددين على شاشة وحدة التحكم.

  • column — يعيد عمود المؤشر الحالي على شاشة وحدة التحكم.

  • row — تُرجع صف المؤشر الحالي على شاشة وحدة التحكم.

  • clear_screen — يمسح شاشة وحدة التحكم.

  • clear_row — يمسح صفًا واحدًا على شاشة وحدة التحكم.

  • next_row — ينقل المؤشر إلى الصف التالي على شاشة وحدة التحكم.

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

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

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

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

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

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

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

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

الإجراءات#

rumble#

يُشغّل الأمر rumble نمطًا من الاهتزازات على وحدة التحكم. في سلسلة النمط، تُمثّل النقاط اهتزازات قصيرة، والواصلات اهتزازات طويلة، والمسافات فترات توقف.

Usage:
controller_1.rumble(pattern)

المعلمة

وصف

pattern

سلسلة مكونة من نقاط وواصلات ومسافات تمثل نمط الرنين.

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

شاشة#

تحتوي شاشة وحدة التحكم V5 على 3 صفوف و 19 عمودًا لعرض النصوص والأرقام.

لقطة شاشة من شاشة وحدة التحكم V5، تُظهر الصفوف والأعمدة في منطقة الطباعة. يبدأ الصف 1 والعمود 1 من الزاوية العلوية اليسرى، بينما يقع الصف 3 والعمود 19 في الزاوية السفلية اليمنى.

print#

controller_1.screen.print يعرض النص أو الأرقام أو قيم المتغيرات على شاشة وحدة التحكم باستخدام موضع المؤشر الحالي.

Usage:
controller_1.screen.print(value, sep, precision)

المعلمة

وصف

value

النص أو الرقم أو قيمة المتغير المراد عرضها على شاشة وحدة التحكم. يمكن طباعة أكثر من قيمة واحدة بفصل القيم بفواصل.

sep

اختياري. سلسلة نصية لوضعها بين القيم. يجب كتابة هذا كوسيط مُسمّى، مثل sep=”- “القيمة الافتراضية هي ” “.

precision

اختياري. عدد المنازل العشرية المراد عرضها عند طباعة الأرقام البسيطة. يجب كتابة هذا كمعامل مُسمى، مثل precision=2القيمة الافتراضية هي 2.

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor moves the cursor to a specified row and column on the Controller screen. The next printed value will appear at that position.

Usage:
controller_1.screen.set_cursor(row, col)

المعلمة

وصف

row

صف المؤشر، من 1 إلى 3.

col

عمود المؤشر، من 1 إلى 19.

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

العمود column يُرجع العمود الحالي الذي سيتم طباعة النص فيه على شاشة وحدة التحكم.

Usage:
controller_1.screen.column()

حدود

وصف

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

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row تُرجع الصف الحالي حيث سيتم طباعة النص على شاشة وحدة التحكم.

Usage:
controller_1.screen.row()

حدود

وصف

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

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen يمسح شاشة وحدة التحكم ويعيد المؤشر إلى موضع البداية.

Usage:
controller_1.screen.clear_screen()

حدود

وصف

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

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row يمسح صفًا واحدًا على شاشة وحدة التحكم.

Usage:
controller_1.screen.clear_row(row)

المعلمة

وصف

row

اختياري. الصف المراد مسحه، من 1 إلى 3إذا لم يتم تحديد صف، فسيتم مسح صف المؤشر الحالي.

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

يؤدي الأمر next_row إلى نقل المؤشر إلى العمود 1 في الصف التالي من شاشة وحدة التحكم. ستظهر القيمة المطبوعة التالية في ذلك الصف.

Usage:
controller_1.screen.next_row()

حدود

وصف

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

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

المحصلون#

.pressing#

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

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

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

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

الجانبان الأمامي والخلفي لوحدة التحكم V5 مع تمييز الأزرار باللون الأصفر. على سطح وحدة التحكم، توجد أزرار الأسهم لأعلى، ولأسفل، ولليسار، ولليمين على اليسار، وأزرار X، وA، وB، وY باتجاه عقارب الساعة بدءًا من الساعة 12 على اليمين. على الجانب الخلفي لوحدة التحكم، توجد أزرار L1، وL2، وR1، وR2 على الجانبين الأيسر والأيمن على التوالي.

زر

يأمر

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressing() — زر X

buttonY

controller_1.buttonY.pressing() — زر Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressing() — الزر الأيسر

buttonRight

controller_1.buttonRight.pressing() — الزر اليمين

buttonL1

controller_1.buttonL1.pressing() — زر L1

buttonL2

controller_1.buttonL2.pressing() — زر L2

buttonR1

controller_1.buttonR1.pressing() — زر R1

buttonR2

controller_1.buttonR2.pressing() — زر R2

حدود

وصف

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

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

    wait(20, MSEC)

.position#

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

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

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

وحدة تحكم VEX V5 مع تسمية المحاور المحيطة بعصا التحكم. المحوران 1 و2 حول عصا التحكم اليمنى، والمحوران 3 و4 حول اليسرى.

محور

يأمر

axis1

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

axis2

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

axis3

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

axis4

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

حدود

وصف

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

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

.pressed#

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

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

الجانبان الأمامي والخلفي لوحدة التحكم V5 مع تمييز الأزرار باللون الأصفر. على سطح وحدة التحكم، توجد أزرار الأسهم لأعلى، ولأسفل، ولليسار، ولليمين على اليسار، وأزرار X، وA، وB، وY باتجاه عقارب الساعة بدءًا من الساعة 12 على اليمين. على الجانب الخلفي لوحدة التحكم، توجد أزرار L1، وL2، وR1، وR2 على الجانبين الأيسر والأيمن على التوالي.

زر

يأمر

buttonA

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

buttonB

controller_1.buttonB.pressed(callback, arg) — الزر B

buttonX

controller_1.buttonX.pressed(callback, arg) — زر X

buttonY

controller_1.buttonY.pressed(callback, arg) — زر Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — الزر الأيسر

buttonRight

controller_1.buttonRight.pressed(callback, arg) — الزر اليمين

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

المعلمة

وصف

callback

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

arg

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

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

controller_1.buttonA.pressed(drive_forward)

.released#

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

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

الجانبان الأمامي والخلفي لوحدة التحكم V5 مع تمييز الأزرار باللون الأصفر. على سطح وحدة التحكم، توجد أزرار الأسهم لأعلى، ولأسفل، ولليسار، ولليمين على اليسار، وأزرار X، وA، وB، وY باتجاه عقارب الساعة بدءًا من الساعة 12 على اليمين. على الجانب الخلفي لوحدة التحكم، توجد أزرار L1، وL2، وR1، وR2 على الجانبين الأيسر والأيمن على التوالي.

زر

يأمر

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.released(callback, arg) — زر X

buttonY

controller_1.buttonY.released(callback, arg) — زر Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.released(callback, arg) — زر اليسار

buttonRight

controller_1.buttonRight.released(callback, arg) — الزر اليمين

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

المعلمة

وصف

callback

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

arg

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

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

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

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

وحدة تحكم VEX V5 مع تسمية المحاور المحيطة بعصا التحكم. المحوران 1 و2 حول عصا التحكم اليمنى، والمحوران 3 و4 حول اليسرى.

محور

يأمر

axis1

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

axis2

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

axis3

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

axis4

controller_1.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 tada_sound():
    brain.play_sound(SoundType.TADA)

controller_1.axis4.changed(tada_sound)

المُنشئون#

Controller#

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

Usage:
Controller(controller_type)

المعلمة

وصف

controller_type

اختياري. نوع وحدة التحكم المراد إنشاؤها: PRIMARY لوحدة التحكم الأساسية المتصلة بالدماغ أو PARTNER لوحدة التحكم الثانية المتصلة بالدماغ.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)