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

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

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

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

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

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

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

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

المزايا

القيود

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

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

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

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

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

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

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

قم بتنزيل ملف مشروع VEXcode IQ (الجيل الثاني) "الخيار 2" >

ملاحظة: في حالة استخدام Clawbot من الجيل الأول، سيلزم عكس محرك الذراع في تكوين الجهاز ليعمل على النحو المنشود في المشروع أعلاه.

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

قطعة الكود

توضيح

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

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

تقريب من كومة الكتل في مشروع الخيار 2 VEXcode IQ. يتم تسليط الضوء على أربع كتل داخل حلقة Forever الخاصة بالمكدس. يقرؤون إلى الأبد، ويضبطون سرعة المحرك الأيسر إلى موضع وحدة التحكم A بنسبة %، ويدورون المحرك الأيسر إلى الأمام، ويضبطون سرعة المحرك الأيمن إلى موضع وحدة التحكم D بنسبة %، ويدورون المحرك الأيمن إلى الأمام. رسم تخطيطي لجهاز التحكم IQ (الجيل الثاني) مع الأزرار وعصا التحكم المسمى بها. المشهد من الجزء الأمامي من وحدة التحكم. يتم تسمية محاور عصا التحكم اليسرى بالرمز A وB. ويتم تسمية الزر الأوسط لعصا التحكم اليسرى بالرمز L3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليسرى بـ E Up وE Down. يتم تسمية محاور عصا التحكم اليمنى بالرمز C و D. ويتم تسمية الزر الأوسط لعصا التحكم اليمنى بالرمز R3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليمنى بـ F Up وF Down.

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

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

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

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

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

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

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

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

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

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

المزايا

القيود

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

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

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

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

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

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

قم بتنزيل ملف مشروع VEXcode IQ (الجيل الثاني) "الخيار 3" >

ملاحظة: في حالة استخدام Clawbot من الجيل الأول، سيلزم عكس محرك الذراع في تكوين الجهاز ليعمل على النحو المنشود في المشروع أعلاه.

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

قطعة الكود

توضيح

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

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

تقريب من مجموعتين من الكتل في مشروع Option 3 VEXcode IQ. تقرأ المجموعة الأولى "عندما يتم تغيير محور وحدة التحكم A، اضبط سرعة المحرك الأيسر على موضع وحدة التحكم A بنسبة % ثم قم بتدوير المحرك الأيسر للأمام". تقرأ المجموعة الثانية "عندما يتم تغيير محور وحدة التحكم D، اضبط سرعة RightMotor على موضع وحدة التحكم D بنسبة % ثم قم بتدوير RightMotor للأمام". رسم تخطيطي لجهاز التحكم IQ (الجيل الثاني) مع الأزرار وعصا التحكم المسمى بها. المشهد من الجزء الأمامي من وحدة التحكم. يتم تسمية محاور عصا التحكم اليسرى بالرمز A وB. ويتم تسمية الزر الأوسط لعصا التحكم اليسرى بالرمز L3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليسرى بـ E Up وE Down. يتم تسمية محاور عصا التحكم اليمنى بالرمز C و D. ويتم تسمية الزر الأوسط لعصا التحكم اليمنى بالرمز R3. يتم تسمية الزرين الدائريين الموجودين أسفل عصا التحكم اليمنى بـ F Up وF Down.

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

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

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

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

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

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

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

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

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

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

المزايا

القيود

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

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

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

Last Updated: