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

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

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

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

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

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

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

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

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

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

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

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

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

تم فتح مشروع VEXcode V5 Workspace مع خيار الكتل 2. يحتوي المشروع على مجموعة من الكتل، وقد تم تكوين الأجهزة الخاصة به. يتم فتح قائمة الأجهزة على الجانب وتسرد الأجهزة التالية: وحدة التحكم 1، ومحرك المخلب على المنفذ 3، ومحرك الذراع على المنفذ 8، والمحرك الأيسر على المنفذ 1، والمحرك الأيمن على المنفذ 10. يوجد في مساحة العمل مجموعة من الكتل لمعالجة مدخلات وحدة التحكم. يقرأ المكدس عند بدء التشغيل، قم بتعيين إيقاف ArmMotor إلى وضع الثبات وقم بتعيين إيقاف ClawMotor إلى وضع الثبات. باقي عناصر المكدس موجودة في حلقة تكرار لا نهائية. يقرأ: إلى الأبد، اضبط سرعة المحرك الأيسر على موضع وحدة التحكم 1 بنسبة 3%، وقم بتدوير المحرك الأيسر للأمام، واضبط سرعة المحرك الأيمن على موضع وحدة التحكم 1 بنسبة 2%، وقم بتدوير المحرك الأيمن للأمام. بعد ذلك، إذا تم الضغط على زر Controller1 لأعلى، فقم بتدوير ArmMotor لأعلى، وإذا تم الضغط على زر Controller1 لأسفل، فقم بتدوير ArmMotor لأسفل، وإلا فأوقف ArmMotor. وأخيرًا، إذا تم الضغط على وحدة التحكم 1 أ، فقم بتدوير محرك المخلب لفتحه، وإذا تم الضغط على وحدة التحكم 1 ب، فقم بتدوير محرك المخلب لإغلاقه، وإلا فأوقف محرك المخلب.

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

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

قطعة الكود توضيح
صورة مقربة لمجموعة الكتل في مشروع VEXcode V5 الخيار 2. تم تمييز كتلتين وهما خارج حلقة Forever الخاصة بالمكدس، وهما تقرأان set ArmMotor stoping to hold و set ClawMotor stoping to hold. تم استخدام Clawbot لمثال التعليمات البرمجية هذا. عندما يتم استخدام الأزرار الموجودة على وحدة التحكم لرفع وخفض الذراع، بمجرد تحرير الزر، سيعود الذراع للأسفل بسبب الجاذبية. سيؤدي ضبط كل من الذراع والمخلب على "الإمساك" إلى ضمان بقاء الذراع والمخلب في مكانهما حتى بعد تحرير الأزرار الموجودة على وحدة التحكم.
صورة مقربة لمجموعة الكتل في مشروع VEXcode V5 الخيار 2. تم تمييز أربع كتل داخل حلقة Forever الخاصة بالمكدس. يقرأون "إلى الأبد"، ويضبطون سرعة المحرك الأيسر على موضع وحدة التحكم 1 بنسبة 3%، ويديرون المحرك الأيسر للأمام، ويضبطون سرعة المحرك الأيمن على موضع وحدة التحكم 1 بنسبة 2%، ويديرون المحرك الأيمن للأمام.

 

وحدة التحكم V5 لعرض تخطيط أزرارها.

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

قطعة الكود توضيح
صورة مقربة لمجموعة واحدة من الكتل في مشروع VEXcode V5 الخيار 3. يقرأ المكدس عند بدء التشغيل، قم بتعيين إيقاف ArmMotor إلى وضع الثبات ثم قم بتعيين إيقاف ClawMotor إلى وضع الثبات.
تم استخدام Clawbot لمثال التعليمات البرمجية هذا. عندما يتم استخدام الأزرار الموجودة على وحدة التحكم لرفع وخفض الذراع، بمجرد تحرير الزر، سيعود الذراع للأسفل بسبب الجاذبية. سيؤدي ضبط كل من الذراع والمخلب على "الإمساك" إلى ضمان بقاء الذراع والمخلب في مكانهما حتى بعد تحرير الأزرار الموجودة على وحدة التحكم.
صورة مقربة لمجموعتين من الكتل في مشروع VEXcode V5 الخيار 3. يقرأ السطر الأول: عند تغيير المحور 3 في وحدة التحكم 1، اضبط سرعة المحرك الأيسر على موضع وحدة التحكم 1 3 % ثم قم بتدوير المحرك الأيسر للأمام. يقرأ المكدس الثاني: عند تغيير المحور 2 في وحدة التحكم 1، اضبط سرعة المحرك الأيمن على موضع وحدة التحكم 1 2 % ثم قم بتدوير المحرك الأيمن للأمام.

 

وحدة التحكم V5 لعرض تخطيط أزرارها.

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

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

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

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

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

صورة مقربة لأربع مجموعات من الكتل في مشروع VEXcode V5 الخيار 3. يقرأ السطر الأول: عند الضغط على زر Controller1 لأعلى، قم بتدوير ArmMotor لأعلى. يقرأ السطر الثاني: عند تحرير زر Controller1 لأعلى، أوقف ArmMotor. يقرأ السطر الثالث: عند الضغط على زر Controller1 لأسفل، قم بتدوير ArmMotor لأسفل. يقرأ السطر الرابع: عند تحرير زر Controller1 لأسفل، أوقف 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: