جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
سأوضح في هذه التعليمات كيفية إنشاء نسخة من اللعبة الكلاسيكية Pong لشاشة VGA ، باستخدام ESP8266 وبعض المكونات الأخرى.
أصبحت هذه اللعبة ممكنة بفضل مكتبة EspVGAx التي تم نشرها مؤخرًا على GitHub بواسطة Sandro Maffiodo (المعروف أيضًا باسم Smaffer) ، وبقدر ما أعرف ، هذه هي اللعبة الأولى التي تستغلها.
تنفذ المكتبة دقة 512 × 480 بكسل ، مخزنة في حافظة إطارات داخل ذاكرة الوصول العشوائي ، والتي تتطلب 30720 بايت. الدقة ضخمة بالمقارنة مع Arduino TVout أو VGAx (128 × 96 و 120 × 60 بكسل على التوالي). آمل أن تلهم هذه اللعبة المبرمجين الآخرين لتطوير أو إعادة إنتاج ألعاب أكثر تعقيدًا.
الخطوة 1: قائمة المواد
تتطلب مكتبة EspVGAx ESP8266 مع تعرض كل GPIO ، مثل لوحة ESP-12E أو NodeMCU-12E أو أي لوحة تعرض GPIO5 (D1) و GPIO4 (D2) و GPIO13 (D7)
على وجه الخصوص ، استخدمت:
- و ESP8266 NodeMCU-12E (الرابط هنا)
- موصل DSUB15 (أي موصل أنثى VGA)
- 330 أوم المقاوم
- مقاوم آخر (حوالي 1 إلى 3 كيلو أوم)
- اثنين من مقاييس الجهد 10 كيلو أوم
- زر ضغط (n.o.)
- اثنان من الثنائيات (مثل 1N4007)
- لوح التجارب
- الأسلاك
حصلت على موصل DSUB15 من لوحة VGA للكمبيوتر الشخصي قديمة. بدلاً من ذلك ، يمكنك أيضًا قطع كابل VGA قديم وتوصيل الأسلاك مباشرة بلوحة التجارب.
الخطوة 2: المكتبة وتحميل الرسم التخطيطي
هناك طرق مختلفة للبرمجة و ESP8266 ؛ لقد استخدمت Arduino IDE لكتابة Pong وتحميل الكود.
يرجى ملاحظة أن مكتبة EspVGAx تعمل مع Arduino IDE 1.8.1. إذا كان لديك إصدارات أخرى ، فإن الأفضل هو تنزيل ملفات.zip وإلغاء ضغطها في مجلد مخصص. إصدار Windows هنا. إصدارات أنظمة التشغيل الأخرى هنا.
بعد ذلك ، يجب عليك تنزيل مكتبة EspVGAx من صفحة GithHub هنا (الرابط المباشر للإصدار المضغوط هنا) ، وإلغاء ضغطها في مكتبات المجلدات في برنامج Arduino.
ملاحظة: يوجد خطأ بسيط في الملف espvgax_draw.h. لتصحيحه ، ما عليك سوى استبدال السطر 17:
بينما (x0٪ 32) {مع while (x0٪ 32 && sw> 32) {
أخيرًا يمكنك تنزيل ESP8266_Pong.rar في نهاية هذه الخطوة.
بمجرد فك الضغط ، لتحميله على ESP8266 ، تحتاج إلى تكوين Arduino IDE.
إذا لم تكن قد فعلت ذلك من قبل ، فيمكنك العثور على جميع التعليمات المطلوبة في هذه التعليمات ، على وجه الخصوص في الخطوة 2.
بمجرد تكوين كل شيء ، يجب أن تبدو إعدادات ESP8266 مثل تلك الموضحة في الصورة أعلاه.
إذا كان بإمكانك تحميل الكود بدون أخطاء ، يمكنك البدء في تجميع الأجزاء.
الخطوة 3: توصيل الأجزاء: موصل VGA
أوصي بتوصيل منفذ VGA أولاً ، كما هو موضح في الصور أعلاه. يرجى ملاحظة أنه من خلال توصيل الدبابيس الثلاثة باللون الأحمر والأخضر والأزرق معًا (أي الدبابيس 1 و 2 و 3 على موصل DSUB15) ، ستحصل على صورة بالأبيض والأسود على شاشتك. يمكنك أيضًا الحصول على مجموعة ألوان مختلفة. اطلع على التفاصيل في صفحة Library GitHub.
علاوة على ذلك ، يجب عليك توصيل المقاوم 330 أوم بين دبابيس RGB و D7 (GPIO13) على ESP8266. أعطاني هذا صورة رمادية قليلاً على شاشتي ، وبالتالي ، بعد عدة محاولات ، قررت التخلص منها على الإطلاق.
في هذه المرحلة ، إذا كان كل شيء يعمل بشكل صحيح ، يمكنك بالفعل توصيل الشاشة ورؤية شاشة بداية اللعبة ، مع شعار "ESP8266 VGAx Pong".
الخطوة 4: توصيل الأجزاء: مقاييس الجهد والزر
يجب توصيل الزر بين 3.3 فولت والدبوس D0 (GPIO16). قم أيضًا بتوصيل المقاوم 1 إلى 3 kOhm من D0 إلى الأرض. هذا يتجنب أن يكون D0 في حالة غير محددة عندما يكون الزر مفتوحًا.
الاتصال بين مقياسي فرق الجهد أقل أهمية ، في واقع الأمر ، فإن ESP8266 لا يحتوي إلا على منفذ إدخال تناظري A0 (ADC0)! الحيلة هي توصيل كل من مخرجات pot.s بنفس المنفذ ، و "Multlex" لهم. يعني مضاعفة الإرسال ببساطة أنك ستقوم بتشغيل مقياس الجهد ، وقراءته ، ثم إيقاف تشغيله والانتقال إلى الثاني.
إذا كنت تريد معرفة المزيد حول هذه الطريقة ، فيمكنك قراءة هذا Instructable.
قم بتوصيل أحد مقاييس الجهد القصوى بـ GND ، والطرف الآخر بـ D5 لمقياس جهد اللاعب الأيسر و D6 للاعب الأيمن.
يجب توصيل كل دبوس مركزي لمقياس الجهد بصمام ثنائي فردي ، ويجب توصيل الجوانب الأخرى من الصمامات الثنائية بـ A0 (ADC0) ، مع القطبية الموضحة في الصورة أعلاه.
الخطوة 5: الخلاصة والشكر والتقدير
أنا ممتن لساندرو مافيودو - SMAFFER - لمكتبة ESPVGAX. هذه اللعبة لن تكون ممكنة بدونها.
آمل أن يكون هذا Instructable مصدر إلهام للمبرمجين الآخرين لعمل نسخ من ألعاب أركيد كلاسيكية أكثر تعقيدًا باستخدام ESP8266 ، والتي لديها قيود أقل بكثير من Arduino.
أخيرًا ، كتبت هذا Instructable لإرساله إلى مسابقة Toys: إذا كنت ترغب في ذلك أو أعد إنتاجه ، فالرجاء تخصيص بعض الوقت للتصويت عليه!