بدأ كل شيء بلعبة صغيرة من العصور المظلمة تسمى "ماريو" ، منذ أن كنت شابًا صغيرًا يقفز على البط لإنقاذ أميرتي حتى أصبح أميرًا وسيمًا يتجول في بلاد فارس (أمير بلاد فارس) يقاتل الظلام لإنقاذ عالمي من ورائي ، كنت من أشد المعجبين بلعب ألعاب الفيديو ونشأت في لعبها. لكنهم يشعرون بالملل أحيانًا وأشعر بأنني أقل انخراطًا في ذلك. اليوم ، تتيح وحدات التحكم في الألعاب المتقدمة ممارسة الألعاب الافتراضية وتساعدنا على الشعور باللعبة بشكل أفضل بكثير مما يمكن أن تفعله لوحة المفاتيح أو الماوس.
كوني متحمسًا لاردوينو ، لقد سئمت لعب اللعبة الشهيرة المسماة "الطيور الغاضبة" باستخدام لوحة المفاتيح والماوس وقررت إنشاء وحدة تحكم الألعاب الخاصة بي باستخدام جهاز استشعار فليكس ومقياس جهد. عندما يتم سحب المستشعر المرن ، سيتم أيضًا سحب الطائر الموجود على المنجنيق ويمكنك استخدام مقياس الجهد لضبط الاتجاه الذي يجب أن يتم إطلاقه فيه. ثم عند تحرير جهاز الاستشعار المرن ، سيتم إطلاق الطائر. لقد استمتعت كثيرًا بفعل ذلك ، لذا إذا كنت تريد بناء شيء مشابه جدًا ، فسيكون هذا البرنامج التعليمي مفيدًا. سيكون هذا البرنامج التعليمي مفيدًا أيضًا في التحكم في مؤشر الماوس باستخدام مقياس الجهد.
متطلبات البرامج والأجهزة:
البرمجيات:
- اردوينو IDE
- IDE المعالجة
- لعبة الطيور الغاضبة على الكمبيوتر
المعدات:
- Arduino (أي إصدار)
- مقياس فرق الجهد
- جهاز الاستشعار المرن
- 47 كيلو أوم المقاوم
- توصيل الأسلاك
- اللوح
المفهوم وراء:
و يقرأ مجلس اردوينو القيم من الجهد وفليكس سينور ويبلغها لأجهزة الكمبيوتر المحمول / PC عبر منفذ COM USB عن طريق وضعها الطبيعي Serial.write () وظيفة. ثم نقرأ هذه المعلومات باستخدام المعالجة والتحكم في مؤشر الماوس باستخدام فئة Robot في Java المدعومة بمعالجة IDE. لقد قمنا ببرمجة IDE للمعالجة بطريقة يتم فيها النقر بالماوس عند سحب مستشعر Flex ، وبناءً على مقدار السحب ، سيتحرك مؤشر الماوس في الاتجاه X. ثم بناءً على القيمة من مقياس الجهد ، سنحرك مؤشر الماوس في الاتجاه Y ، وبهذه الطريقة يمكننا تحديد الاتجاه الذي يجب أن ينطلق فيه الطائر.
مخطط الرسم البياني:
دائرة لعب Angry Bird باستخدام Flex Sensor و Potentiometer سهلة.
لقد قمنا ببساطة بتوصيل مقياس جهد وجهاز استشعار مرن بالمدخلات التناظرية (A0 ، A1) في Arduino. يتم أيضًا سحب خرج مستشعر Flex لأسفل باستخدام مقاوم سحب لأسفل بمقدار 47 كيلو.
يمكنك توصيله مباشرة على اللوح أو لحامه بلوحة Perf وتجميعه على قفازات أو أي شيء لجعله أكثر إبداعًا. لقد استخدمت ببساطة لوحة توصيل لإجراء اتصالاتي كما هو موضح أدناه:
برنامج اردوينو:
يتم تقديم كود Arduino الكامل في نهاية البرنامج التعليمي. يتم شرح بعض الأسطر الهامة أدناه.
نقوم بتهيئة البرنامج للعمل بمعدل 9600 باود والبدء في قراءة القيم من مستشعر Flex و Potentiometer. كما نعلم ، يمكن لوظيفة serial.write () إرسال بايت واحد فقط من البيانات في كل مرة. نظرًا لأن البايت الواحد هو 8 بت و 2 ^ 8 = 256. سنتمكن من إرسال القيم من 0 إلى 256. لذلك علينا ضغط قيم خرج مستشعر Flex وإخراج مقياس الجهد إلى 0 إلى 256.
للقيام بذلك ، نستخدم وظيفة map () في Arduino. يتم تحويل جميع القيم من المستشعر المرن من 5 إلى 100 ، لذلك عندما نثني المستشعر سيزداد من 5 وعند تحريره سيعود إلى 5. لذكر نقرات الماوس ، يتم استخدام القيمة 1 و 0. عندما يتم إرسال 1 ، يتم الضغط على الماوس وعندما يتم إرسال 0 يتم تحرير الماوس.
إذا (FlexValue> = 65 && FlexValue <= 120) // يختلف مستشعر المرن الخاص بي من 65 إلى 120 ، فقد تكون مختلفة {FlexValue = map (FlexValue، 120،65،0،100) ؛ // بناءً على الانحناء ، قم بالتحويل إلى 0 إلى 100 إذا تم استخدام (FlexValue> = 5) // 1 و 0 للنقر بالماوس ، لذا ابدأ من 5 {Mclick = true؛ Serial.write (1) ؛ // 1 يتم إرساله لجعل الماوس الأيسر ينقر فوق Serial.write (FlexValue) ؛ // قيمة Flex هي المسافة لتحريك الماوس في الاتجاه X} وإلا {Mclick = false؛ Serial.write (0) ؛}}
وبالمثل ، يتم تحويل القيم التي تشكل مقياس الجهد من 101 إلى 200 تغني وظيفة الخريطة () ويتم إرسالها إلى منفذ الكمبيوتر المحمول COM الذي يقاضي وظيفة Serial.write () كما هو موضح أدناه.
if (potValue <= 200) {potValue = map (potValue، 0،200،101،201) ؛ // بناءً على التحويل إلى 101 إلى 201 Serial.write (potValue) ؛ // قيمة الوعاء هي المسافة لتحريك الماوس في اتجاه Y}
يتم شرح بقية البرنامج باستخدام التعليقات.
كود المعالجة:
المعالجة عبارة عن تطبيق تطوير مفتوح المصدر ويمكن تنزيله بسهولة واستخدامه لتطوير مشاريع مثيرة للاهتمام باستخدام Arduino أو وحدات تحكم دقيقة أخرى. لقد قمنا بالفعل ببعض المشاريع باستخدام المعالجة ويمكنك التحقق منها بالنقر فوق الروابط أدناه.
- DIY راديو FM باستخدام المعالجة
- الواقع الافتراضي / التحكم بالإيماءات باستخدام Arduino
- غرفة الدردشة الخاصة باستخدام Arduino.
- نظام رادار اردوينو باستخدام معالجة التطبيق ومستشعر الموجات فوق الصوتية
- اكتشاف الوجه وتتبعه في الوقت الحقيقي باستخدام Arduino
- عداد السرعة DIY باستخدام Arduino والمعالجة
- لعبة بينج بونج باستخدام مقياس التسارع اردوينو
- روبوت ذو قدمين باستخدام اردوينو
- كاميرا التصوير الحراري اردوينو DIY
في هذا المشروع ، استخدمنا IDE للتجهيز لقراءة قيم منفذ COM والتحكم في مؤشر الماوس استنادًا إلى القيم المستلمة عبر منفذ COM. في كود تجهيز الكامل لهذا تحكم لعبة الطيور الغاضبة يمكن تحميلها من الرابط أدناه:
- رمز المعالجة لوحدة التحكم في لعبة Angry Bird (انقر بزر الماوس الأيمن و "حفظ الرابط باسم")
يمكن العثور على برنامج Arduino في نهاية هذا البرنامج التعليمي. تم تعديل كود المعالجة ليناسب غرضنا من الكود الذي قدمه yoggy على صفحة GitHub الخاصة به.
يجب قراءة البيانات الواردة من منفذ COM بنفس سرعة البث بالباود التي تم إرسالها من Arduino. تحقق أيضًا من منفذ COM الذي يتصل به Arduino باستخدام مدير الجهاز. تم توصيل My Arduino بـ COM3 وكان المنفذ رقم 0 في جهاز الكمبيوتر الخاص بي وكان معدل الباود في Arduino 9600 لذا يكون الرمز كما يلي
المنفذ = مسلسل جديد (this، Serial.list ()، 9600) ؛
بمجرد أن نبدأ في قراءة القيم ، نميزها من خلال التعرف عليها بناءً على قيمتها على كيفية إرسالنا من Arduino. يتم تعيين القيم مرة أخرى من 0 إلى 100 حتى نتمكن من التحكم في الماوس بناءً على هذه القيمة.
إذا (port.available ()> 0) {data = port.read () ؛ println (بيانات) ؛ // اقرأ البيانات من منفذ COM واحفظها في البيانات} if (data> = 101 && data <= 201) // إذا كانت القيمة من 101 إلى 201 ، فيجب أن تكون من مقياس الجهد {Turn = int (map (data ، 101،201،0،100)) ؛ // استخدم هذه القيمة لتدوير المنجنيق} إذا (البيانات> = 5 && البيانات <= 100) // إذا كانت القيمة من 5 إلى 100 ، فيجب أن تكون من Flex Sensor {Pull = int (map (data، 5،100، 0،100))؛} // استخدم هذه القيمة لسحب المنجنيق إذا (data == 1) click = true؛ // استخدم هذه القيمة للضغط على زر الماوس إذا (البيانات == 0) انقر = خطأ ؛ // استخدم هذه القيمة لتحرير زر الماوس
بمجرد تصنيف البيانات ، يمكننا بعد ذلك التحكم في الماوس باستخدام فئة Robot Java في المعالجة. الأمر robot.mouseMove (crntX-Pull، crntY + Turn) ؛ يمكن استخدامها لتحريك الماوس إلى أي موضع مطلوب وخطوط robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) ؛ و robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK) ، يمكن استخدامه للضغط على زر الماوس أو تحريره على التوالي.
if (click == false) // عندما لا يتم سحب Flex Sesnor {crntX = (int) p.getX () ؛ crntY = (int) p.getY () ، إذا (سحب> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK) ؛ // حرر زر الماوس} إذا (click == true) // عندما يتم سحب Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) ؛ // اضغط على زر الماوس robot.mouseMove (crntX-Pull، crntY + Turn) ؛ // حرك الماوس بناءً على قيمة Flex و POT}}
سيعرض IDE عند بدء التشغيل أيضًا مربع حوار صغير يمكنك من خلاله العثور على قيم Pull و Turn وحالة النقر بالماوس كما هو موضح أدناه
يمكن استخدام هذه التفاصيل لتصحيح أخطاء البرنامج أو تصحيح أي بيانات مطلوبة.
العمل:
لجعل Angry Bird Project يعمل باستخدام الكود المقدم ، قم بتجميع أجهزتك وفقًا لمخطط الدائرة وقم بتحميل كود Arduino المحدد. ثم لاحظ منفذ COM الذي يتصل به Arduino الخاص بك وقم بإجراء التغييرات اللازمة في كود المعالجة وابدأ تشغيل رسم المعالجة.
الآن ، ما عليك سوى تشغيل لعبة الطيور الغاضبة ووضع المؤشر بالقرب من المنجنيق واسحب المستشعر المرن لسحب الطائر وتحديد الاتجاه باستخدام مقياس الجهد. بمجرد ضبط الاتجاه ، حرر مستشعر Flex
EEEEWWWWEEEEEEEEEE !!!!!!!!!!……………
سوف يتم رمي طائرك في الهواء وينفجر !! على الخنازير. يمكن العثور على العمل الكامل في الفيديو الموضح أدناه.
آمل أن تكون قد استمتعت بالمشروع وتمكنت من بناء شيء مشابه. إذا كانت لديك أي شكوك يمكنك التواصل معي في قسم التعليقات أو نشر سؤالك في المنتدى للأسئلة الفنية.
الآن ، حان الوقت للاصطدام بصناديق الخنازير هذه واستعادة بيض الطيور !!!!