رمز وحدة التحكم المخصصة في VEXcode EXP

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

ستوجهك هذه المقالة عبر ثلاثة خيارات مختلفة لترميز وحدة التحكم المخصصة في VEXcode EXP. سيتم وصف كل طريقة مع مزاياها وقيودها ومثال لحالة الاستخدام للمساعدة في إرشادك عند اختيار الطريقة. ولأغراض هذه المقالة، تم إنشاء جميع أمثلة التعليمات البرمجية المعروضة لـ Clawbot. ومع ذلك، يمكن تطبيق نفس المفاهيم على العديد من الإصدارات الأخرى الموجودة على builds.vex.com، والإصدارات المخصصة.

الخيار 1: تعيين الأزرار في تكوين الجهاز

يعد هذا الخيار رائعًا عندما تستخدم إصدارًا قياسيًا، مثل BaseBot أو Clawbot، وترغب في البدء والتشغيل بسرعة.

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

قائمة أجهزة VEXcode EXP مع خيارات وحدة التحكم المعروضة. يوضح الرسم التخطيطي لعناصر التحكم أن عصا التحكم الاثنتين تحركان الروبوت في تكوين محرك الخزان. تتحكم الأزرار لأعلى ولأسفل في ArmMotorGroup، وتتحكم أزرار المحور R في ClawMotor.

ملخص الخيار 1: تعيين الأزرار في تكوين الجهاز

المزايا

القيود

مثال على الموقف

  • الإعداد السريع دون الحاجة إلى الترميز
  • أبسط طريقة
  • قابل للتعديل بسهولة
  • يمكن تعيين محركات فردية، ومجموعة نقل الحركة القياسية، ومجموعات المحركات للأزرار
  • تقتصر تعيينات الأزرار على عدد الأزرار الموجودة على وحدة التحكم
  • لا يمكن أن يتجاوز نظام نقل الحركة 4 محركات أو يمكن تخصيصه (يتم دعم محرك قياسي فقط، وليس محرك H، أو نظام نقل الحركة التقليدي، أو أي نظام دفع مخصص آخر)
  • التعامل مع البنية القياسية مثل BaseBot أو Clawbot أو تعديل بسيط لتلك البنيات القياسية. على سبيل المثال، BaseBot مزود بمدخل متصل بالجزء الأمامي يتم التحكم فيه بواسطة مجموعة محرك.
  • التعامل مع الأزرار التي تتوافق مع السلوكيات المختلفة على الروبوت بسرعة دون الكثير من الترميز

الخيار 2: استخدام حلقة دائمة

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

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

المثال المحدد الموضح أدناه هو إحدى الطرق التي يمكنك من خلالها استخدام حلقة Forever مع روبوت ذو تصميم مخصص (مثل روبوت مزود بنظام نقل حركة مخصص) لقيادة الروبوت والتلاعب بالمخلب والذراع من أجل التفاعل مع الكائنات.

تم فتح مساحة عمل VEXcode EXP مع مشروع الكتل الخيار 2. يحتوي المشروع على مجموعة من الكتل وقد تم تكوين الأجهزة. يتم فتح قائمة الأجهزة على الجانب ويتم إدراج الأجهزة التالية: ArmMotor على المنفذ 3، وClawMotor على المنفذ 4، وController، وLeftMotor على المنفذ 6، وRightMotor على المنفذ 10. وأخيرًا، هناك مجموعة من الكتل للتعامل مع إدخال وحدة التحكم. تقرأ المكدس عند البدء، اضبط إيقاف ArmMotor على وضع الإمساك واضبط إيقاف ClawMotor على وضع الإمساك. يتم تضمين بقية المكدس في حلقة دائمة. يقرأ إلى الأبد، اضبط سرعة المحرك الأيسر على موضع وحدة التحكم 3 بنسبة %، ثم قم بتدوير المحرك الأيسر إلى الأمام، ثم اضبط سرعة المحرك الأيمن إلى موضع وحدة التحكم 2 بنسبة %، ثم قم بتدوير المحرك الأيمن إلى الأمام. بعد ذلك، إذا تم الضغط على وحدة التحكم لأعلى، قم بتدوير ArmMotor لأعلى، وإلا إذا تم الضغط على وحدة التحكم E لأسفل، قم بتدوير ArmMotor لأسفل، وإلا قم بإيقاف ArmMotor. أخيرًا، إذا تم الضغط على وحدة التحكم A، فقم بتدوير ClawMotor لفتحه، وإلا، إذا تم الضغط على وحدة التحكم B، فقم بتدوير ClawMotor لإغلاقه، وإلا فقم بإيقاف ClawMotor.

قم بتنزيل ملف مشروع VEXcode EXP "الخيار 2" >

شرح رمز الخيار 2.

قطعة الكود

توضيح

تقريب كومة الكتل في مشروع الخيار 2 VEXcode EXP. تم تمييز كتلتين وتقعان خارج حلقة Forever الخاصة بالمكدس، وهما تقرأان تعيين إيقاف ArmMotor للاحتفاظ وتعيين إيقاف ClawMotor للاحتفاظ.

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

تقريب كومة الكتل في مشروع الخيار 2 VEXcode EXP. يتم تسليط الضوء على أربع كتل داخل حلقة Forever الخاصة بالمكدس. يقرؤون إلى الأبد، ويضبطون سرعة المحرك الأيسر إلى موضع وحدة التحكم 3 بنسبة %، ويدورون المحرك الأيسر إلى الأمام، ويضبطون سرعة المحرك الأيمن إلى موضع وحدة التحكم 2 بنسبة %، ويدورون المحرك الأيمن إلى الأمام. رسم تخطيطي لوحدة التحكم EXP مع الأزرار وعصا التحكم المسمى بها. المشهد من الجزء الأمامي من وحدة التحكم. تمت تسمية محاور عصا التحكم اليسرى بالرقم 3 و 4. يُسمى الزر الأوسط لعصا التحكم اليسرى بـ L3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليسرى بالأعلى والأسفل. يتم تسمية محاور عصا التحكم اليمنى بالرقمين 1 و 2. يُسمى الزر الأوسط لعصا التحكم اليمنى بالرمز R3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليمنى بالحرفين A وB.

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

يتم استخدام حلقة Forever للتحقق المستمر من الأزرار التي يتم الضغط عليها على وحدة التحكم.

تُستخدم كتل [ضبط سرعة المحرك] لضبط سرعة المحرك على موضع وحدة التحكم الحالية على طول المحورين 2 و3. وهذا يعادل وضع السيارة في القيادة. وهذا لا يجعل السيارة تتحرك بالضرورة، بل يضبطها فقط.

يقوم كل محور من محاور عصا التحكم بإرجاع قيمة تتراوح بين -100 إلى +100، كما يُرجع قيمة صفر عند التوسيط. وهذا يعني أن محاور عصا التحكم، عند الضغط عليها، تعادل -100% إلى 100%. كلما تم دفع المحاور لمسافة أبعد نحو 100 أو -100، زادت سرعة دوران المحرك.

يتم بعد ذلك استخدام كتلة [Spin] لتحريك المحرك فعليًا. وهذا يعادل الضغط على البنزين في السيارة بمجرد ضبط الاتجاه. يتيح ذلك التحكم في كل محرك بواسطة أحد محاور التحكم الأربعة.

تقريب كومة الكتل في مشروع الخيار 2 VEXcode EXP. يتم تسليط الضوء على كتلة if وelse if وelse داخل حلقة Forever الخاصة بالمكدس. يقرأ إذا تم الضغط على وحدة التحكم لأعلى، قم بتدوير ArmMotor لأعلى، وإلا إذا تم الضغط على وحدة التحكم لأسفل، قم بتدوير ArmMotor لأسفل، وإلا قم بإيقاف ArmMotor.

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

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

لاحظ أن القسم التالي من التعليمات البرمجية في مشروع Claw يتبع نفس الشرح.

ملخص الخيار 2: استخدام حلقة دائمة

مزايا

محددات

حالة المثال

  • يمكن أن تستوعب تصميمات مخصصة، خاصة مجموعات الدفع التي تحتوي على أكثر من 4 محركات
  • يمكن تعيين سلوكيات متعددة لزر واحد
  • يمكن تعيين سلوكيات لمحاور مختلفة على وحدة التحكم (على عكس الخيارات الوحيدة لـ Left Arcade وRight Arcade وSplit Arcade وTank Drive في تكوين الجهاز)
  • يتطلب قدرًا معينًا من المعرفة بالبرمجة (الشروط الشرطية والحلقات ومعرفة الأزرار/عصا التحكم الموجودة على وحدة التحكم)
  • احتمالية تنفيذ المشروع بشكل أبطأ، أو التأخر في وقت استجابة الزر. نظرًا لأن جميع الأوامر مضمنة في حلقة Forever واحدة، فقد يتم تنفيذ التعليمات البرمجية ببطء اعتمادًا على الشروط المحددة وطول التعليمات البرمجية.
  • استخدام وحدة التحكم مع روبوت مصمم خصيصًا، خاصة مع مجموعة نقل الحركة غير القياسية
  • عند الرغبة في تعيين سلوكيات متعددة لزر واحد. على سبيل المثال، عند الضغط على الزر العلوي، يمكن للمخلب أن يفتح ويتحرك للأمام ثم يغلق حول كائن ما.

الخيار 3: استخدام الأحداث

إذا كنت تريد الكثير من التخصيص لوحدة التحكم الخاصة بك، فإن استخدام الأحداث هو الخيار الأفضل بالنسبة لك. ضغطة زر واحدة يمكن أن تؤدي إلى سلوكيات متعددة للروبوت، مثل الضغط على زر لفتح المخلب، ورفع الذراع، والقيادة للأمام لمسافة محددة. قد تؤدي محاولة ترميز سلوكيات متعددة لكل زر داخل حلقة Forever إلى إبطاء تنفيذ المشروع بشكل كبير - ويتيح لك استخدام الأحداث القيام بذلك بشكل أكثر فعالية.

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

تم فتح مشروع VEXcode EXP Workspace مع الخيار 3. يتكون المشروع من 11 كومة صغيرة من الكتل وقد تم تكوين الأجهزة. يتم فتح قائمة الأجهزة على الجانب ويتم إدراج الأجهزة التالية: ArmMotor على المنفذ 3، وClawMotor على المنفذ 4، وController، وLeftMotor على المنفذ 6، وRightMotor على المنفذ 10. وأخيرًا، هناك 11 مجموعة صغيرة من الكتل التي تتعامل مع إدخال وحدة التحكم. تقرأ المجموعة الأولى عند البدء، اضبط إيقاف ArmMotor على وضع الإمساك ثم اضبط إيقاف ClawMotor على وضع الإمساك. تقرأ المجموعة الثانية "عندما يتم تغيير محور التحكم 3، اضبط سرعة LeftMotor على موضع وحدة التحكم 3 بنسبة % ثم قم بتدوير LeftMotor للأمام". تقرأ المجموعة الثالثة "عندما يتم تغيير محور وحدة التحكم 2، اضبط سرعة RightMotor على موضع وحدة التحكم 2 بنسبة % ثم قم بتدوير RightMotor للأمام". يقرأ المكدس الرابع: عند الضغط على زر وحدة التحكم لأعلى، قم بتدوير ArmMotor لأعلى. يقرأ المكدس الخامس "عندما يتم تحرير زر وحدة التحكم لأعلى، قم بإيقاف ArmMotor". تقرأ المجموعة السادسة أنه عند الضغط على زر وحدة التحكم لأسفل، قم بتدوير ArmMotor لأسفل. تقرأ المجموعة السابعة "عندما يتم تحرير زر وحدة التحكم لأسفل، قم بإيقاف ArmMotor". تقرأ المجموعة الثامنة: عند الضغط على زر وحدة التحكم A، قم بتدوير ClawMotor مفتوحًا. تقرأ المجموعة التاسعة: عندما يتم تحرير زر وحدة التحكم A، قم بإيقاف ClawMotor. تقرأ المجموعة العاشرة: عند الضغط على زر التحكم B، قم بتدوير ClawMotor لإغلاقه. تقرأ المجموعة الحادية عشرة والأخيرة ما يلي: عند تحرير زر وحدة التحكم B، أوقف ClawMotor.

قم بتنزيل ملف مشروع VEXcode EXP "الخيار 3" >

شرح رمز الخيار 3.

قطعة الكود

توضيح

تقريب من كومة واحدة من الكتل في مشروع الخيار 3 VEXcode EXP. تقرأ المكدس عند البدء، اضبط إيقاف ArmMotor على وضع الاحتفاظ ثم اضبط إيقاف ClawMotor على وضع الاحتفاظ.

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

تقريب من مجموعتين من الكتل في مشروع الخيار 3 VEXcode EXP. تقرأ المجموعة الأولى "عندما يتم تغيير محور وحدة التحكم 3، اضبط سرعة المحرك الأيسر على موضع وحدة التحكم 3 بنسبة % ثم قم بتدوير المحرك الأيسر للأمام". تقرأ المجموعة الثانية "عندما يتم تغيير محور وحدة التحكم 2، اضبط سرعة RightMotor على موضع وحدة التحكم 2 بنسبة % ثم قم بتدوير RightMotor للأمام. رسم تخطيطي لوحدة التحكم EXP مع الأزرار وعصا التحكم المسمى بها. المشهد من الجزء الأمامي من وحدة التحكم. تمت تسمية محاور عصا التحكم اليسرى بالرقم 3 و 4. يُسمى الزر الأوسط لعصا التحكم اليسرى بـ L3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليسرى بالأعلى والأسفل. يتم تسمية محاور عصا التحكم اليمنى بالرقمين 1 و 2. يُسمى الزر الأوسط لعصا التحكم اليمنى بالرمز R3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليمنى بالحرفين A وB.

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

{When controller axis} تُستخدم كتل الأحداث لتحفيز سلوكيات معينة عند تغيير أحد المحاور الأربعة في وحدة التحكم باستخدام عصا التحكم.

يتم استخدام كتل [ضبط سرعة المحرك] لضبط سرعة المحرك على موضع وحدة التحكم الحالية على طول المحورين A وD. وهذا يعادل وضع السيارة في القيادة. وهذا لا يجعل السيارة تتحرك بالضرورة، بل يضبطها فقط.

يقوم كل محور من محاور عصا التحكم بإرجاع قيمة تتراوح بين -100 إلى +100، كما يُرجع قيمة صفر عند التوسيط. وهذا يعني أن محاور عصا التحكم، عند الضغط عليها، تعادل -100% إلى 100%. كلما تم دفع المحاور لمسافة أبعد نحو 100 أو -100، زادت سرعة دوران المحرك.

يتم بعد ذلك استخدام كتلة [Spin] لتحريك المحرك فعليًا. وهذا يعادل الضغط على البنزين في السيارة بمجرد ضبط الاتجاه. يتيح ذلك التحكم في كل محرك بواسطة أحد محاور التحكم الأربعة.

تقريب لأربع مجموعات من الكتل في مشروع الخيار 3 VEXcode EXP. تقرأ المجموعة الأولى ما يلي: عند الضغط على زر وحدة التحكم لأعلى، قم بتدوير ArmMotor لأعلى. يقرأ المكدس الثاني "عندما يتم تحرير زر وحدة التحكم لأعلى، قم بإيقاف ArmMotor". يقرأ المكدس الثالث أنه عند الضغط على زر وحدة التحكم لأسفل، قم بتدوير ArmMotor لأسفل. يقرأ المكدس الرابع "عندما يتم تحرير زر وحدة التحكم لأسفل، قم بإيقاف ArmMotor".

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

{When controller axis} يتم استخدام كتل الأحداث لتعيين سلوكيات معينة للأزرار التي يتم الضغط عليها أو تحريرها على وحدة التحكم. في هذا القسم من التعليمات البرمجية، يتم تعيين الشروط في حالة الضغط على الزرين لأعلى أو لأسفل. إذا كان الأمر كذلك، فستحدث سلوكيات معينة، مثل رفع الذراع أو خفضه أو التوقف.

لاحظ أن القسم الأخير من التعليمات البرمجية في مشروع Claw يتبع نفس الشرح.

ملخص الخيار 3: استخدام الأحداث

مزايا

محددات

حالة المثال

  • يمكن أن تستوعب تصميمات مخصصة، خاصة مجموعات الدفع التي تحتوي على أكثر من 4 محركات
  • يمكن تعيين سلوكيات متعددة لزر واحد
  • يمكن تعيين سلوكيات لمحاور مختلفة على وحدة التحكم (على عكس الخيارات الوحيدة لـ Left Arcade وRight Arcade وSplit Arcade وTank Drive في تكوين الجهاز)
  • تنفيذ أسرع للتعليمات البرمجية وبالتالي استجابة الزر (حيث يتم استدعاء كل شرط بشكل منفصل وعدم تضمينه في مجموعة واحدة من التعليمات البرمجية)
  • يتطلب معرفة معظم الترميز بالخيارات (الشروط، والحلقات، والأحداث، ومعرفة الأزرار/عصا التحكم الموجودة على وحدة التحكم)
  • استخدام وحدة التحكم مع روبوت مصمم خصيصًا، خاصة مع مجموعة نقل الحركة غير القياسية
  • عند الرغبة في تعيين سلوكيات متعددة لزر واحد دون أي تأخير. على سبيل المثال، عند الضغط على الزر العلوي، يمكن للمخلب أن يفتح ويتحرك للأمام ثم يغلق حول كائن ما.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: