جدول المحتويات:
- الخطوة 1: كيفية بناء وحدة تحكم Arduino VGA الخاصة بك
- الخطوة 2: ألعاب من مؤلفين آخرين
- الخطوة 3: الملحق 1: مزيد من التفاصيل حول كيفية بناء وحدات التحكم
- الخطوة 4: الملحق 2: بعض الاعتبارات حول حدود الذاكرة
فيديو: وحدة تحكم Arduino VGA مع خمس ألعاب: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
في Instructables السابقة الخاصة بي ، قمت بإعادة إنتاج نسخ مبسطة لبعض ألعاب الأركيد الكلاسيكية الأكثر شيوعًا ، عن طريق Arduino عارية وبعض المكونات الأخرى. لاحقًا انضممت إلى خمسة منهم معًا في رسم تخطيطي واحد. سأوضح هنا كيف يمكنك بناء وحدة تحكم بسيطة يمكنها لعب Pong و Breakout و Bomber و Tetris ولعبة رسم مستوحاة من Etch-a-Sketch. يمكن استخدام وحدة التحكم هذه أيضًا للعب Snake ، ولعبتين أخريين كتبهما مؤلفون آخرون: Bit Ninja بواسطة Sandro Maffiodo المعروف أيضًا باسم "Smaffer" و Stacker بواسطة Nikita Kurylev.
الميزة الرئيسية هي توليد إشارة VGA ، بفضل مكتبة VGAx ، وبالتالي تحتاج وحدة التحكم إلى شاشة VGA. هدفي ، كالعادة ، هو تجنب أي "مكون خاص" لبنائه ، فأنت لا تحتاج بعد ذلك إلى أي دعم أو دروع! المكونات الوحيدة هي مقياسان للجهد وخمسة أزرار وقليل من المقاومات وموصل DSUB15 (VGA). مكبر الصوت بيزو اختياري. يمكنك أن ترى كيف تبدو هذه الألعاب في الصور الموجودة في هذه الصفحة.
تسمح مكتبة VGAx باستخدام أربعة ألوان بدقة 120 × 60 بكسل ، وهي ليست كثيرة ولكنها كافية لوحدة التحكم في الألعاب القديمة هذه. الرسم خام ولكن بفضل استخدام مقاييس الجهد ، تعمل الألعاب بسلاسة. تتوفر مؤثرات صوتية بسيطة أيضًا.
الخطوة 1: كيفية بناء وحدة تحكم Arduino VGA الخاصة بك
قم أولاً بتنزيل رموز ArduinoVGAgame.ino و / أو Snake.ino في أسفل هذه الصفحة وانسخها على جهاز الكمبيوتر الخاص بك في دليل يحمل نفس الاسم. قم بتنزيل مكتبة VGAx من هذا الرابط على GitHub. أسهل طريقة هي نسخه في المجلد الفرعي لبرنامج Arduino المسمى "مكتبات" ، ليتم التعرف عليه على الفور.
هام: تعمل هذه المكتبة مع Arduno IDE 1.6.4 ولكنها غير متوافقة تمامًا مع الإصدارات القديمة أو الأحدث.
قم بتحميل الكود في لوحة Arduino (لقد اختبرت كل من Uno و Nano). تحذير من انخفاض الذاكرة المتاحة أمر طبيعي. إذا لم يكن لديك أخطاء أخرى ، فكل شيء على ما يرام ويمكنك البدء على الفور في إنشاء وحدة التحكم الخاصة بك.
لهذا تحتاج:
- Arduino Uno Rev.3 أو Arduino Nano 3.x (ATmega328)
- موصل DSUB15 ، أي موصل VGA أنثى أو كابل VGA ليتم قطعه.
- المقاومات: 2 × 68 أوم و 2 × 470 أوم و 5 × 1 إلى 2 كيلو أوم
- اثنان من مقاييس الجهد الخطي 10 كيلو أوم (القيم المماثلة جيدة أيضًا)
- خمسة أزرار
- قطعة من الكابلات
- واحد أو اثنين من الصناديق الجميلة لوضع جميع المكونات.
إختياري:
- لوح أو لوح شريطي
- مكبر صوت بيزو
تم الإبلاغ عن التخطيطي في الجزء العلوي من هذه الخطوة ، جنبًا إلى جنب مع مثال على "وحدة التحكم" النهائية.
يوضح التخطيطي كيفية توصيل زر ومقياس الجهد. بشكل أكثر تحديدًا ، تحتاج إلى توصيل خمسة أزرار بالدبابيس 5 و 10 و 11 و 12 و 13 على التوالي. يتم وصف الإجراء الذي يتم تنفيذه بواسطة كل زر في الجدول العلوي الأيمن في التخطيطي. يظهر على اليسار كيفية توصيل مقياس الجهد (تحتاج إلى مقياسين للجهد إلى المسامير A1 و A2). يجب توصيل مكبر الصوت بالدبوس التناظري A0.
لقد وضعت لوحة Arduino مع موصل VGA في صندوق خشبي ، والذي يحمل أيضًا مقياس جهد المشغل الأول وأربعة أزرار ، بينما يوجد مقياس جهد المشغل الثاني وزر بدء التشغيل في صندوق منفصل وأصغر.
إذا كنت تحب هذه اللعبة وقررت إعادة إنتاجها ، فأنا أقدر إذا كتبت تعليقًا أو أرسلت صورة في قسم التعليقات أدناه.
الخطوة 2: ألعاب من مؤلفين آخرين
قام Sandro Maffiodo مؤخرًا بنشر لعبة BitNinja. يمكنك العثور على مزيد من المعلومات هنا وتنزيل الكود هنا.
لاستخدام وحدة التحكم الخاصة بي ، عليك فقط إعادة تعيين الزر الموجود في الكود الخاص به على النحو التالي:
#define BTN_UP 11 (بدلاً من 13)
#define BTN_LEFT 10 (بدلاً من 12)
#define BTN_RIGHT 12 (بدلاً من 11)
مكدس ، من نيكيتا كوريليف ، متاح هنا. مزيد من المعلومات هنا.
مرة أخرى ، عليك إعادة تعيين زر واحد ، في جزء مختلف من الكود: فقط استبدل digitalRead (2) بـ digitalRead (13)
الخطوة 3: الملحق 1: مزيد من التفاصيل حول كيفية بناء وحدات التحكم
يمكنك إدراك وحدة التحكم بعدة طرق مختلفة ، اعتمادًا على المواد المتاحة وذوقك.
أحب أن أدركها بصناديق خشبية (انظر الصور في هذه الصفحة). صندوق رئيسي لـ Arduino وموصل VGA وأزرار المشغل الأول ومقياس الجهد ؛ واحدة ثانية (أصغر) فقط لزر وعجلة المشغل الثاني (مطلوبان لبونج ولعبة الرسم). الاحتمال الآخر هو وضع كل شيء في صندوق واحد أكبر.
أولاً أوصيك بتوصيل منفذ VGA. في الصورتين الأولى والثانية ، يمكنك رؤية بعض التفاصيل: لاحظ وجود مقاومين 470 أوم للأحمر والأخضر متصلان بالدبابيس 6 و 7 على التوالي ، واثنان 68 أوم إلى الدبابيس 3 و 9 لإشارة التزامن الأفقي والرأسي.
يمكنك اختيار مجموعات ألوان مختلفة اعتمادًا على أي دبابيس تقوم بتوصيلها بموصل VGA DSUB15 ، حيث تمثل الدبابيس 1 و 2 و 3 الأحمر والأخضر والأزرق (RGB) على التوالي. لقد قمت بتوصيل الدبابيس 1 و 2 ، وبالتالي لدي تركيبة الألوان التالية: (0 ، 0) = أسود ؛ (1 ، 0) = أحمر ؛ (0 ، 1) = أخضر ؛ (1 ، 1) = أصفر.
لجميع الاحتمالات المختلفة ، أقترح قراءة التفاصيل في الصفحة حيث تقوم بتنزيل مكتبات VGAx.
بمجرد أن يصبح موصل VGA جاهزًا ، يمكنك تجهيز جميع الكابلات الأخرى للأزرار والعجلات ومكبر الصوت (انظر الصورة 2).
الآن فقط ضع كل شيء معًا: تذكر أن كل دبوس زر يحتاج إلى توصيله بالأرض من خلال مقاوم 1 أو 2 كيلو أوم ، وإلا عندما يكون الزر مفتوحًا ، فقد تكون حالة الدبوس غير محددة. هذا يعني أنه في حالة ترك الدبوس مفصولًا ، يمكن أن يكون لديك جهد عشوائي (ثابت) يمكنه تنشيطه. انظر لمزيد من يكتشف التخطيطي في الخطوة الثانية من هذا التدريب.
الخطوة الأخيرة هي إصلاح كل شيء في مكانه. لقد استخدمت مسدس الغراء الساخن ، لكن يمكنك استخدام طريقتك المفضلة.
الخطوة 4: الملحق 2: بعض الاعتبارات حول حدود الذاكرة
إنه لأمر مدهش أن Arduino البسيط قادر على توليد إشارة VGA وجميع هذه الألعاب معًا. عنق الزجاجة الحقيقي هو عدم وجود SRAM. يحتوي متحكم AVR على 2048 بايت فقط متاحًا لتخزين المتغيرات ومعالجتها ، وتخزن مكتبة VGAx متغيرات الشاشة في مخزن إطارات 120 × 60 بكسل حيث يحتاج كل بكسل إلى 2 بت (4 ألوان) ، بإجمالي 1800 بايت. هذا يعني أنه لم يتبق سوى 248 بايت لمتغيرات الرسم التخطيطي. علاوة على ذلك ، في تجربتي ، يجب على المرء أن يترك 100 بايت على الأقل مجانًا لتجنب عدم الاستقرار. باستخدام ما يزيد عن 1950 بايت من الذاكرة الديناميكية ، يبدأ المتحكم الدقيق في إظهار سلوك غريب وغير متوقع.
هذا يعني أنه يجب مشاركة جميع المتغيرات بين الألعاب المختلفة ، وهذا يجعل الكود غير قابل للقراءة تمامًا ويصعب تصحيحه. إنها ليست مجرد مسألة "إضافة لعبة جديدة" إلى الرسم السابق ، ولكن يجب تعديل جميع التعليمات البرمجية بشكل كبير وتحسينها.
علاوة على ذلك ، كان علي استخدام الحد الأدنى من تنسيق المتغير الممكن: على سبيل المثال ، بالنسبة لجميع الإحداثيات ، كان علي استخدام "بايت" بدلاً من "int" أو ، في حالات أخرى ، كان علي أن أفضل "int" بدلاً من "float".
أخيرًا ، إعلامي يذهب إلى Sandro Maffiodo المعروف أيضًا باسم Smaffer ، مبتكر مكتبة VGAx ولعبة BitNinja الرائعة. بدون هذه المكتبة ، لم يكن من الممكن تحقيق هذا المشروع.
شكرًا لك أيضًا على Nikita Kurylev على لعبة Stacker البسيطة والمضحكة.
موصى به:
كيفية تنظيف أي وحدة تحكم ألعاب تقريبًا: 5 خطوات
كيفية تنظيف أي وحدة تحكم ألعاب تقريبًا: لدي عدد قليل من وحدات التحكم Logitech Dual Action التي أستخدمها لمحاكي Raspberry Pi الذي سأقوم بتحميل Instructable عليه قريبًا. أكثر من عام) ، معظم الأزرار الموجودة على
وحدة تحكم ألعاب Google T Rex التلقائية باستخدام Arduino: 7 خطوات
وحدة تحكم ألعاب Google T Rex التلقائية باستخدام Arduino: لنقم ببنائها
تحكم بسيط بالإيماءات - تحكم في ألعاب RC بحركة ذراعك: 4 خطوات (بالصور)
تحكم بسيط بالإيماءات - تحكم في ألعاب التحكم عن بعد الخاصة بك بحركة ذراعك: مرحبًا بك في "ملفي" رقم 45. منذ فترة ، قمت بعمل نسخة RC كاملة من BB8 باستخدام أجزاء Lego Star Wars … https://www.instructables.com/id/Whats-Inside-My-R… عندما رأيت كم كان رائعًا فرقة Force Band التي صنعها Sphero ، فكرت: & quot؛ حسنًا ، أنا ج
إنشاء وحدة تحكم ألعاب فعلية: 10 خطوات (بالصور)
إنشاء وحدة تحكم لعبة فيزيائية: عندما تم إطلاق Nintendo Wii ، تم تشجيع اللاعبين ، كلا المطلوبين ، على ترك الأريكة والقفز والرقص والاهتزاز من أجل تسجيل النقاط في اللعبة التي يختارونها. على الرغم من وجود منحنى تعليمي حاد في البناء لجهاز Wii ، فمن السهل
وحدة تحكم ألعاب Pi Tourer 1963: 9 خطوات (مع صور)
1963 Pi Tourer Game Console: هذا هو راديو السيارة Sky Tourer عام 1963 والذي قمت بتحويله إلى وحدة تحكم محمولة للألعاب الرجعية. يحتوي على Raspberry Pi 3 مدمج ، مع 6 أزرار آركيد وعصا تحكم تتحكم في تلك العفاريت الرجعية من طراز RetroPie عبر لوحة تحكم Picade. ال