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

اردوينو: آلة الكرة والدبابيس: 8 خطوات (بالصور)
اردوينو: آلة الكرة والدبابيس: 8 خطوات (بالصور)

فيديو: اردوينو: آلة الكرة والدبابيس: 8 خطوات (بالصور)

فيديو: اردوينو: آلة الكرة والدبابيس: 8 خطوات (بالصور)
فيديو: الجهاز دا هيخليك تعمل فلوس 💵 #اختراعات_سمان 2024, شهر نوفمبر
Anonim
Image
Image

نظرًا لأنني دائمًا أحب كل من آلات لعبة الكرة والدبابيس والإلكترونيات ، فقد قررت بناء آلة الكرة والدبابيس الخاصة بي. اخترت Arduino للبرمجة والإلكترونيات ، لأنها منصة يسهل الوصول إليها بشكل كبير وصغيرة الحجم وسهلة الاستخدام.

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

الخطوة 1: بناء القضية

بناء القضية
بناء القضية

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

الخطوة 2: بناء ميكانيكي الزعانف

بناء ميكانيكي زعنفة
بناء ميكانيكي زعنفة

نظرًا لأنني أردت الحد من تكلفة هذا المشروع ، فقد قررت صنع زعانف ميكانيكية بالكامل بدلاً من تلك الإلكترونية. إذا كنت مهتمًا بالزعانف الإلكترونية ، فيمكنك استخدام بنية متشابهة إلى حد ما ، ولكن مع ما يسمى بـ "الملف اللولبي" المتصل بها (كانت الملفات اللولبية ذات القوة الكافية للتحكم في الزعانف باهظة الثمن بالنسبة لي).

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

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

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

الخطوة 3: وضع الجدران

وضع الجدران
وضع الجدران

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

الخطوة 4: إضافة كتل النتيجة

إضافة كتل النتيجة
إضافة كتل النتيجة
إضافة كتل النتيجة
إضافة كتل النتيجة

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

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

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

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

الخطوة 5: إضافة جهة اتصال انتهت اللعبة

إضافة جهة اتصال Game Over
إضافة جهة اتصال Game Over

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

الخطوة 6: حفر فتحات الكابلات

حفر فتحات الكابلات
حفر فتحات الكابلات
حفر فتحات الكابلات
حفر فتحات الكابلات
حفر فتحات الكابلات
حفر فتحات الكابلات

قبل أن نبدأ في توصيل كل شيء بـ Arduino ، نحتاج إلى حفر فتحتين للكابلات أولاً. لقد قمت بحفر ثقب في كلتا قطعتين من رقائق الألومنيوم ، لذلك ثقب واحد في رقائق الألومنيوم بالقرب من كتل النتيجة ، وثقب واحد في رقائق الألومنيوم بالقرب من اللعبة عند التلامس.

إلى جانب ذلك ، قمت أيضًا بحفر ثقب في أسفل اليسار ، بين الجدران ، للكابل المؤدي إلى بوابة الكرة الإضافية Servo.

يجب أن يكون هناك أيضًا ثقب للكابل المتصل بشاشة LCD في الجزء السفلي.

الخطوة 7: توصيل كل شيء

توصيل كل شيء
توصيل كل شيء
توصيل كل شيء
توصيل كل شيء

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

الخطوة الثامنة: تحميل الكود

قم بتحميل الكود التالي إلى Arduino الخاص بك لجعل آلة الكرة والدبابيس الخاصة بك تعمل!

// تضمين المكتبة لشاشات الكريستال السائل

# تضمين # تضمين

// تهيئة دبابيس بيانات LCD

LiquidCrystal LCD (7 ، 8 ، 9 ، 10 ، 11 ، 12) ؛

// إنشاء مؤازرة

الكرة المؤازرة

// إنشاء متغيرات للدبابيس التي نستخدمها

int gameoverPin = 6 ؛ درجة int: Pin = 5 ؛ مكبر الصوت int = 4 ؛ int ballGateServoPin = 3 ؛

// تهيئة متغيرات اللعب لآلة الكرة والدبابيس

درجة int = 0 ؛ أعلى الدرجات كثافة العمليات = 500 ؛ bool highscoreReached = خطأ ؛ كرات كثافة العمليات = 3 ؛ int gameoverTimer = 0 ؛ int gameoverTimerDuration = 100 ؛ منطقية gameoverTriggered = خطأ ؛

// قم بتشغيل هذا الرمز مرة واحدة في الإطار الأول

إعداد باطل () {// تعيين pinMode للدبابيس التي نستخدمها pinMode (gameoverPin ، INPUT) ؛ pinMode (ScorePin ، INPUT) ؛

// تهيئة شاشة LCD بإعطاء العرض والارتفاع

lcd.begin (16 ، 2) ؛

// قم بإرفاق مضاعفات بوابة الكرة بالدبوس المناسب

ballGateServo.attach (ballGateServoPin) ؛

// إعادة تعيين بوابة المؤازرة إلى وضع البداية

ballGateServo.write (0) ؛ }

// قم بتشغيل هذا الرمز في كل إطار واحد

void loop () {// Capture the pin inputs int gameoverState = digitalRead (gameoverPin) ؛ int ScoreState = digitalRead (ScorePin) ؛

// أضف إلى النتيجة إذا تم استلام المدخلات

if (ScoreState) {tone (speakerPin ، 1000) ؛ النتيجة + = 10 ؛ } else {noTone (4) ؛ }

// اطرح من الكرات إذا تم تشغيل حفرة تجاوز اللعبة

إذا (gameoverState و! gameoverTriggered) {balls - = 1 ؛ gameoverTriggered = صحيح ؛ gameoverTimer = gameoverTimerDuration ؛ }

// ابدأ مؤقت تجاوز اللعبة بمجرد أن لا تلمس الكرة جهة اتصال انتهاء اللعبة

إذا (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer - = 1؛ } else {gameoverTriggered = false؛ }}

// وميض نص اللعبة على شاشة LCD وإعادة تعيين النتيجة والكرات

إذا (كرات <= 0) {lcd.setCursor (0 ، 0) ؛ لـ (int i = 5؛ i> = 1؛ i--) {lcd.clear () ؛ تأخير (250) ؛ lcd.print ("انتهت اللعبة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("حاول مرة أخرى؟") ؛ تأخير (250) ؛ } lcd.clear () ؛ النتيجة = 0 ؛ ballGateServo.write (0) ؛ highscoreReached = خطأ ؛ كرات = 3 ؛ }

إذا كانت (النتيجة> أعلى الدرجات و! أعلى الدرجات وصلت) {

lcd.setCursor (0 ، 0) ؛ لـ (int i = 5؛ i> = 1؛ i--) {lcd.clear () ؛ تأخير (250) ؛ lcd.print ("NEW HIGHSCORE") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("الموت المفاجئ!") ؛ تأخير (250) ؛ } lcd.clear () ؛ الكرات = 1 ؛ ballGateServo.write (120) ؛ أعلى الدرجات = الدرجة ؛ highscoreReached = صحيح ؛ }

// قم بتحديث أعلى الدرجات إذا كانت النتيجة الحالية أعلى

إذا (الدرجة> أعلى الدرجات) {أعلى الدرجات = الدرجة ؛ }

// اضبط المؤشر على السطر 0

lcd.setCursor (0 ، 0) ؛ // اطبع الدرجة الحالية (عالية) إلى شاشة LCD إذا كانت (الدرجة <= 0) {lcd.print ("Highscore:" + String (highscore) + "")؛ } else {lcd.print ("Score:" + String (Score) + "")؛ }

// اضبط المؤشر على السطر 1

lcd.setCursor (0 ، 1) ؛

// طباعة الكمية الحالية من الكرات على شاشات الكريستال السائل

lcd.print ("كرات:" + سلسلة (كرات)) ؛ }

موصى به: