جدول المحتويات:

آلة الشريط LED Atari Pong Arcade: 8 خطوات
آلة الشريط LED Atari Pong Arcade: 8 خطوات

فيديو: آلة الشريط LED Atari Pong Arcade: 8 خطوات

فيديو: آلة الشريط LED Atari Pong Arcade: 8 خطوات
فيديو: 1978 Atari Super Breakout Arcade PCB Repair #3 2024, يوليو
Anonim
آلة الشريط LED Atari Pong Arcade
آلة الشريط LED Atari Pong Arcade

اسمي غابرييل بوديفين وهذا هو أول مداخلة لي. أنا حاليًا طالب في المدرسة الثانوية يبلغ من العمر 16 عامًا وأحب إنشاء وبناء الأشياء بينما أكون مهتمًا جدًا بالإلكترونيات والروبوتات والدوائر والبرمجة. آمل أن تجد هذا مفيدًا.

سأوضح لك في هذا الدليل كيفية صنع لعبة Atari Pong Game بأسلوب عتيق داخل علبة أركيد قديمة. يمكنك مشاهدة الفيديو أعلاه لعرض توضيحي للمشروع ، كما يمكنك مشاهدة المشروع النهائي والحالة وحدها وفي الصورتين. في نهاية هذا التطبيق ، سأغوص بشكل أعمق في الكود وكيفية تحريره لتخصيصه.

سيتم تقسيم قائمة الأجزاء الأساسية إلى أقسام: الأدوات وأجزاء التجميع والمكونات

الأدوات التي ستحتاجها ستتضمن ما يلي:

- تدريبات

- لحام حديد

- مفك برغي (مطابق للمسامير التي قررت استخدامها)

- المقياس المتعدد

- المنشار المتداول أو المنشار الشريطي أو القاطع بالليزر ، هل يمكنك الوصول إلى واحد

-قطع أسلاك أو مقص

- مسدس الغراء

ستتضمن الأجزاء التي ستحتاجها للتجميع

- غراء الخشب

- كتل خشبية 10 بوصة في بوصة واحدة

- لوح كبير ربع بوصة من الخشب الرقائقي أو الخشب المختار

- 24 مسمار بطول نصف بوصة

- 14 × 6.5 بوصة من البلاستيك المنتشر LED (اختياري)

- شريط كهربائي أحمر وأزرق

المكونات التي ستحتاجها هي:

- 2100 كيلو أوم

- 8 أمتار من شريط LED يمكن توجيهه بشكل فردي (30 مصباحًا لكل متر)

www.amazon.ca/ALITOVE-WS2812B-Individually-Addressable-Waterproof/dp/B018XAELE4/ref=sr_1_1؟s=hi&ie=UTF8&qid=1535323567&sr=1-

- عدة أمتار من الأسلاك أو أسلاك متعددة الألوان

- محول تيار متردد إلى تيار مستمر يخرج 6 فولت من خلال قابس مقبس أسطواني

- 1 اردوينو أونو R3

إذا لم يكن لديك وصول إلى Arduino Uno R3 مثلي ، فيمكنك إنشاء واحد مثل الذي سأستخدمه في هذا المشروع الذي يستخدم معالج atmel328-pu. اتبع هذا الرابط لمعرفة كيفية بناء

إذا كنت تستخدم arduino uno ، فتابع إلى الخطوة الأولى.

الخطوة 1: بناء صفيف LED

بناء صفيف LED
بناء صفيف LED
بناء صفيف LED
بناء صفيف LED
بناء صفيف LED
بناء صفيف LED

هذه الخطوة هي أبسط خطوة تستغرق وقتًا طويلاً بسبب كل عمليات اللحام التي يجب عليك القيام بها.

-للبدء سوف تحتاج إلى قطعة من الخشب 10 3/4 بوصة × 6 1/2 بوصة.

- بمجرد حصولك على قطعة الخشب الخاصة بك ، امسك شريط LED الخاص بك وقم بقص 26 قطعة كل 10 مصابيح أو كل 6 1/2 بوصة.

- بعد قطع المقاطع ، قم بلصقها على الخشب بشكل عمودي كما هو موضح في الصور التالية الموضحة في الصورة الأولى أعلاه.

- بمجرد لصق الشرائط لأسفل والسماح لها بالاستقرار ، سنبدأ في اللحام.

- ستحتاج إلى ثلاثة أسلاك ملونة مختلفة

- يجب أن يكون سلكيًا مع توصيل جميع الإيجابيات بسلك واحد وجميع السلبيات متصلة بسلك واحد بينما يقوم السلك الأخير بتوصيل شرائط LED معًا. الصور الثانية في بداية هذه الخطوة هي رسم بياني يوضح لك كيفية توصيل الأسلاك.

- أخيرًا بعد لحامها ، ستقوم ببساطة بلف شريط كهربائي على وصلات اللحام الخاصة بك بالألوان المقابلة. كما هو موضح في الصورة الثالثة أعلاه.

- أخيرًا سنقوم بالاتصال بـ Arduino. المدخلات الرقمية الخاصة بك أو السلك الأوسط الخاص بك سوف يتصل بك المدخلات الرقمية 6 دبوس وسيربط الأرضية والإيجابية الخاصة بك بالقضبان الإيجابية والسلبية على اللوحة.

الخطوة 2: أدوات التحكم في المجذاف

الضوابط المجذاف
الضوابط المجذاف
الضوابط المجذاف
الضوابط المجذاف
الضوابط المجذاف
الضوابط المجذاف

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

بمجرد أن تقوم بلحام الأسلاك سنقوم بتوصيلها بـ Arduino. أنت إيجابي وسلبي سوف يتصلان هناك أمطار إيجابية وسلبية مقابلة. سوف تقوم بإخراج الأسلاك على مقاييس الجهد بمدخلات مختلفة على اردوينو. سوف يتصل أحدهما بالقابس (A0) والآخر سوف يتصل بالقابس (A1).

الخطوة الثالثة: قص العلبة

قطع القضية
قطع القضية
قطع القضية
قطع القضية
قطع القضية
قطع القضية
قطع القضية
قطع القضية

سيعطيك هذا الجزء الأبعاد والزوايا لما ستحتاج إلى قطعه

**** مهم جدًا ***** تأكد من أن سمك الخشب ربع بوصة (1/4 بوصة)

أيضًا عند قطع الأجزاء ، تذكر تسمية الأجزاء الخاصة بك

الجزء الأساسي المراد قصه سيتم تسميته أسفل ، خلفي ، علوي ، أمامي علوي ، أمامي سفلي…. هو مبين في الصور في البداية

أبعاد الجزء

- القاع: 13 3/4 بوصة × 10 1/4 بوصة

- الخلف: 13 3/4 بوصة × 15 1/2 بوصة

- الجزء العلوي: 13 3/4 بوصة × 6 1/2 بوصة

- الجزء السفلي الأمامي: 13 3/4 بوصة × 4 1/4 بوصة

- لوحة الاتصال: 13 3/4 بوصة × 6 بوصات

- الجزء العلوي الداخلي: 13 3/4 بوصة × 3 1/4 بوصة

- انحياز LED: 6 1/4 بوصة × 1 بوصة (قطع اثنين من هؤلاء)

- قاع داخلي LED: 13 1/4 بوصة × 4 1/2 بوصة

- لوحة LED خلفية داخلية: 13 1/4 بوصة × 9 بوصات

- الكتل: 1 بوصة × 1 بوصة × 1 بوصة (قطع 10 كتل)

- لوح أكريليك: 13 3/4 بوصة × 6 1/2 بوصة

ستظهر لك الصور أعلاه الزوايا والأبعاد لجزء اللوحة الجانبية. ستحتاج أيضًا إلى قطع جزأين من هذا الجزء

الخطوة 4: تجميع الحالة

الجمعية القضية
الجمعية القضية
الجمعية القضية
الجمعية القضية
الجمعية القضية
الجمعية القضية

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

-أول شيء سنقوم به هو البدء في تجميع القضية. هذا هو المكان الذي تصبح فيه كل قطع الخشب من الخطوة السابقة في متناول يديك.

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

- بعد ذلك سوف تحتاج إلى حفر بعض الثقوب التجريبية من خلال الخشب والكتل. بمجرد الانتهاء من ذلك المسمار ثم إلى الأسفل.

- بعد ذلك سنضع الألواح الجانبية عليها. ضع الألواح على فجوة ربع بوصة على الجانب الخارجي للكتلة. حفر حفرة تجريبية من خلال اللوحة الجانبية والكتلة الخشبية وربط الألواح فيها. كرر للجانب الآخر.

- بعد الانتهاء من الألواح الجانبية. سنقوم بوضع اللوحة السفلية الأمامية. ضع اللوحة متدفقة مع الجزء السفلي وحفر الجوانب الفتحات التجريبية في الكتل وقم بربط اللوحة.

- أخيرًا سنقوم بوضع الظهر. افعل نفس الشيء كما فعلت مع اللوحة السفلية الأمامية وأعد تثبيتها.

-في هذه المرحلة يكون لديك أساس للبناء عليه وفهم لكيفية تجميع هذه الحالة.

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

- ضع ما قمت ببنائه حتى الآن على ظهره وضع الكتل في الزوايا على بعد ربع بوصة من الأعلى. (كما هو موضح في الصورة الثالثة في البداية)

- قم بحفر الفتحات التجريبية للجوانب والظهر وثبتها ببراغي.

- الآن سنقوم بتجميع بقية الجزء العلوي

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

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

-يجب ترك شيء مثل هذا (يظهر في الصورة الأولى من هذه الخطوة)

ستوضح الخطوة التالية بقية التجميع.

الخطوة 5: الانتهاء من التجميع

الانتهاء من التجميع
الانتهاء من التجميع
الانتهاء من التجميع
الانتهاء من التجميع
الانتهاء من التجميع
الانتهاء من التجميع

بحلول هذه المرحلة ، تكون قد أكملت الحالة تقريبًا وقمت ببناء عدد قليل من الأشياء التي يجب وضعها في مكانها وستنتهي.

الآن كل ما تبقى هو تثبيت الإلكترونيات.

- سنبدأ بحفر ثقوب في لوحة الاتصال الخاصة بك لمقياس الجهد الخاص بك. لا تتردد في حفر الثقوب حيث تشعر أنها ستكون مريحة. في حالتي ، أضع الثقوب 2 1/2 بوصة من الأسفل و 3 1/2 بوصات من الجانب لكلا مقاييس الجهد.

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

- بعد أن ينتهي الغراء من التجفيف ، سنضع الأجزاء الإلكترونية. لكن أولاً سيتعين علينا إزالة اللوحة الخلفية.

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

- الآن بعد أن أصبح لديك الجزء الخلفي ، سنضع مقياس الجهد داخل العلبة ببساطة عن طريق وضعهم في الثقوب التي حفرناها للتو ووضع كمية سخية من الغراء الساخن.

*** تحذير *** - كن حذرًا للغاية عند وضع مجموعة LED لأن نقاط اللحام يمكن أن تكون هشة.

- لقد وصلنا الآن إلى الجزء الأكثر أهمية ، وهو وضع مجموعة ليد. ببساطة ضع اللوحة كما هو موضح في الصورة الثانية.

- بمجرد الحصول على لوحة LED الداخلية الخاصة بك ووضعها داخل العلبة مباشرة أسفل اللوحة الخلفية لمصفوفة LED. قد تكون هذه القطعة مناسبة لي. أيضا اتركه يجف قبل المتابعة.

-لقد وصلت إلى الجزء الأخير. أوصي بطلاء جانب واحد من هذا الجزء الأخير (ظهر LED الداخلي) باللون الأسود أو الأبيض للتباين بين مصابيح LED وهذا الجزء.

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

**** مبروك أنك انتهيت من التجميع بأكمله !!!

تابع إلى الخطوة الأخيرة لترميز اللعبة

الخطوة 6: الكود

تهانينا مرة أخرى على الوصول إلى هذا الحد.

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

ولكن قبل أن ندخل في ذلك ، ستحتاج إلى (adafruit_NeoPixel-master) لقد قمت بربط التنزيل أيضًا.

لتثبيت البرنامج الرئيسي ، افتح برنامج اردوينو الخاص بك

1. اذهب إلى رسم

2. مكتبة مفتوحة تشمل

3. انقر (مكتبة add.zip)

4. حدد ملف (adafruit_NeoPixel-master) وقم بإنجازه

أدناه لقد قمت بلصق رمز اللعبة.

#يشمل

#يشمل

طويلة ballXabs = 12 ؛

طويلة ballYabs = 4 ؛

كرة int ؛

الكرة intY ؛

int ballvelX = 1 ؛

int ballvelY = 1 ؛

فهرس int

عدد int fps = 50 ؛

int paddlewidth = 3 ؛

int paddlemax = 9 - paddlewidth + 1 ؛

عدد int knobseg = 1023 / (paddlemax) ؛

int paddle1 = 4 ؛

int paddle2 = 4 ؛

#define NUMPIXELS 260

#define PIN 6

Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS، PIN6، NEO_GRB + NEO_KHZ800) ؛

الإعداد باطل() {

pixels.begin () ،

Serial.begin (9600) ؛

}

حلقة فارغة() {

شاشة واضحة()؛

updateBall () ؛

updatePaddle1 () ،

updatePaddle2 () ،

displayBall () ؛

displayPaddle1 () ،

displayPaddle2 () ،

pixels.show () ،

كشف الاصطدام () ؛

تأخير (fps) ؛

}

clearScreen باطل () {

لـ (int i = 0 ؛ i <NUMPIXELS ؛ i ++) {

pixels.setPixelColor (i ، pixels. Color (0 ، 0 ، 0)) ؛

}

}

تحديث باطل الكرة () {

ballXabs + = ballvelX ؛

ballYabs + = ballvelY ؛

}

كشف باطل الاصطدام () {

Serial.print (ballYabs) ؛

Serial.print ("") ؛

Serial.println (paddle1) ؛

إذا (ballvelX> 0 && ballXabs> = 25) {// اصطدم بالجدار الأيمن

Serial.println ("CollisionX") ؛

النتيجة 1 () ؛ // ballvelX * = - 1 ؛

}

إذا (ballvelX <0 && ballXabs <= 0) {// اصطدم الجدار الأيسر

Serial.println ("CollisionX") ؛

درجة 2 () ؛ // ballvelX * = - 1 ؛

}

إذا (ballvelY> 0 && ballYabs> = 9) {// اصطدم الجدار العلوي

Serial.println ("CollisionY") ؛ ballvelY * = -1 ؛

}

إذا (ballvelY <0 && ballYabs <= 0) {// اصطدم بالجدار السفلي

Serial.println ("CollisionY") ؛

ballvelY * = -1 ؛

}

// كشف تصادم مجداف 2

إذا ((ballvelX> 0 && ballXabs == 24) && ((ballYabs> = paddle2) && (ballYabs <= paddle2 + paddlewidth - 1)))

{// اصطدم بالجدار الأيمن

Serial.println ("CollisionPaddle") ؛

ballvelX * = -1 ؛

}

// كشف تصادم مجداف 1

إذا ((ballvelX = paddle1) && (ballYabs <= paddle1 + paddlewidth - 1)))

{// اصطدم بالجدار الأيمن

Serial.println ("CollisionPaddle") ؛

ballvelX * = -1 ؛

}

}

تحديث باطل Paddle1 () {

مقبض int = analogRead (A0) ؛

paddle1 = مقبض دائري ((طويل) / (طويل) مقبض مقابض) ؛

}

تحديث باطل Paddle2 () {

int knob2 = analogRead (A1) ؛

paddle2 = مقبض دائري ((طويل) 2 / (طويل) مقبض مقابض) ؛

}

كرة عرض باطلة () {

ballX = جولة (ballXabs) ؛

ballY = جولة (ballYabs) ؛

إذا (ballX٪ 2! = 0) {

الفهرس = (9 - كرة ص) + 10 * كرة ؛

إذا (ballX! = 0) {

pixels.setPixelColor (ballY + 10 * (ballX - 1) ، pixels. Color (30 ، 0 ، 0)) ؛ // الجانب الأيسر من ballcolor

}

إذا (ballX! = 25) {pixels.setPixelColor (ballY + 10 * (ballX + 1)، pixels. Color (30، 0، 0)) ؛ // الجانب الأيمن من لون الكرة

}

إذا (ballY! = 9) {pixels.setPixelColor (index - 1، pixels. Color (30، 0، 0)) ؛ // الجوانب السفلية من لون الكرة

}

إذا (ballY! = 0) {pixels.setPixelColor (index + 1، pixels. Color (30، 0، 0)) ؛ // الجوانب العلوية من لون الكرة

}

}

آخر {

الفهرس = ballY + 10 * ballX ؛ إذا (ballX! = 0) {

pixels.setPixelColor ((9 - ballY) + 10 * (ballX - 1)، pixels. Color (30، 0، 0)) ؛ // الجانب الأيسر من الكرة حتى صف

}

إذا (ballX! = 25) {

pixels.setPixelColor ((9 - ballY) + 10 * (ballX + 1) ، pixels. Color (30 ، 0 ، 0)) ؛ // الجانب الأيمن من الكرة حتى صف

}

إذا (كرة! = 9) {

pixels.setPixelColor (index + 1 ، pixels. Color (30 ، 0 ، 0)) ؛ // الجوانب السفلية للكرة حتى الصف

}

إذا (ballY! = 0) {pixels.setPixelColor (index - 1، pixels. Color (30، 0، 0)) ؛ // الجوانب العلوية للكرة حتى صف

}

}

pixels.setPixelColor (فهرس ، بكسل ، لون (255 ، 0 ، 0)) ؛ /// مركز لون الكرة

}

عرض باطل Paddle1 () {

لـ (int i = 0 ؛ i <paddlewidth ؛ i ++) {pixels.setPixelColor (paddle1 + i ، pixels. Color (0 ، 0 ، 255)) ؛

}

}

عرض باطل Paddle2 () {

لـ (int i = 0؛ i <paddlewidth؛ i ++) {pixels.setPixelColor (NUMPIXELS - 1 - paddle2 - i، pixels. Color (0، 0، 255)) ؛

}

}

النتيجة الباطلة 1 () {

resetBall (0) ؛

}

النتيجة الباطلة 2 () {

resetBall (1) ؛

}

إعادة تعيين باطلة (لاعب int) {

تأخير (1000) ؛

ballXabs = 12

؛ ballYabs = 4 ؛

ballvelX = لاعب؟ 1: -1 ؛

ballvelY = 1 ؛

شاشة واضحة()؛

تأخير (1000) ؛

displayBall () ؛

pixels.show () ،

تأخير (1000) ؛

displayPaddle1 () ،

displayPaddle2 () ، pixels.show () ، تأخير (2000) ؛ }

الخطوة 7: التشطيب

التشطيب
التشطيب

بمجرد تحميل الكود ، قم بعمل ثقب في اللوحة الخلفية كبيرة بما يكفي لمحول طاقة جاك البرميل. قم بتوصيله في اردوينو وأخيراً أعد تجميع الجزء الخلفي.

لقد قمت أيضًا بتضمين قائمة الأجزاء أكريليك ناشر LED ، يمكنك الآن وضعه فوق مصابيح LED ولصقه

بعد الانتهاء من ذلك ، تكون جاهزًا للعب والاستمتاع بساعات من الألعاب التنافسية ضد العائلة والأصدقاء.

أخيرًا ، أود أن أهنئكم على استكمال المشروع.

إذا كانت لديك أي مشكلات ، فاتصل بي هنا وأرغب في المساعدة في حل المشكلة.

موصى به: