תוכן עניינים:

ארדואינו: מכונת פינבול: 8 שלבים (עם תמונות)
ארדואינו: מכונת פינבול: 8 שלבים (עם תמונות)

וִידֵאוֹ: ארדואינו: מכונת פינבול: 8 שלבים (עם תמונות)

וִידֵאוֹ: ארדואינו: מכונת פינבול: 8 שלבים (עם תמונות)
וִידֵאוֹ: הוא נאלץ לצאת! ~ בית נטוש שובה לב של מהגרים הולנדים 2024, יוני
Anonim
Image
Image

מכיוון שתמיד אהבתי את מכונות הפינבול ואת האלקטרוניקה, החלטתי לבנות מכונת פינבול משלי. בחרתי בארדואינו לתכנות ואלקטרוניקה, מכיוון שזו פלטפורמה נגישה מאוד שהיא קומפקטית וקלה לשימוש.

במדריך זה אסביר את תהליך הפיתוח שלי, כך שאולי אחד מכם החובבנים יכול ליצור משהו דומה.

שלב 1: בניית התיק

בניית התיק
בניית התיק

נתחיל במקרה של מכונת הפינבול. הכנתי בנייה פשוטה למדי. ניסרתי צלחת תחתונה והשתמשתי ב -4 עמודי עץ זעירים בפינות לחיבור חתיכות הקיר. גודל המארז שלך הוא הבחירה שלך, בחרתי לעשות אותו קצת יותר קטן ממכונת פינבול מקורית מכיוון שלא תכננתי להוסיף תוספות מרהיבות במיוחד למילוי החלל. השתמשתי בברגים ובדבק כדי להפוך את המארז ליציב ככל האפשר. מאחור קידחתי שני חורים ברצפת הרצפה לשתי הרגליים שיעניקו למכונת הפינבול את ההטיה האיקונית. שוב, גובה הרגליים תלוי בך. ככל שאתה עושה את הרגליים גבוה יותר, הכדור יתגלגל מהר יותר (כלפי מטה).

שלב 2: בניית מכונאי הפליפר

בניית מכונאי הפליפר
בניית מכונאי הפליפר

מכיוון שרציתי להגביל את עלות הפרויקט הזה, החלטתי לייצר סנפירים מכניים לחלוטין במקום אלקטרוניים. אם אתה מתעניין בכפכפים אלקטרוניים, אתה יכול להשתמש במבנה שהוא קצת זהה, אבל כשמחובר אליו 'סולנואיד' (סולנואידים עם מספיק כוח לשליטה בכפכפים היו יקרים מדי בשבילי).

התחלתי לקדוח שני חורים בתחתית לנקודת הציר של שני הכפכפים. קידחתי את החורים (לדעתי) קצת יותר מדי קרוב אחד לשני, וזה גרם למשחק להיות קצת יותר מדי קל בסופו של דבר. אז היזהרו לא להניח את הכפכפים קרוב מדי זה לזה, אלא אם אתם רוצים סגנון משחק קל.

כמו כן קדחתי שני חורים בשני הקירות הצדדיים במקביל לחורי הסנפיר. חורים אלה אמורים לשמש לשני כפתורי הסנפיר.

השתמשתי בקפיצים כדי למשוך את הכפכפים בחזרה למקומם המקורי, ובניתי בנייה מסתובבת בין הכפכפים לכפתורים בכדי לגרום להם להסתובב בעת לחיצה על הכפתורים. כדי למנוע מהקפיצים למשוך את הכפכפים רחוק מדי, הנחתי שני ברגים כדי להחזיק את הכפכפים במיקומם המקורי.

שלב 3: הצבת הקירות

הצבת הקירות
הצבת הקירות

הנחתי כמה קירות כדי להפנות את הכדור לעבר הכפכפים. הם מאוד פשוטים להכנה. כל שעליך לעשות הוא לקדוח 3 חורים בתחתית המארז ולדחוף שלושה סיכות עץ. כרוך רצועת גומי סביב הסיכות וסיימת.

שלב 4: הוספת בלוקי הניקוד

הוספת בלוקי הניקוד
הוספת בלוקי הניקוד
הוספת בלוקי הניקוד
הוספת בלוקי הניקוד

בלוקי הניקוד הם אחד החלקים המכריעים ביותר במכונת הפינבול, לכן הקפד לבצע את החלק הזה נכון. הכנתי שלושה חסימות למכונת הפינבול שלי, אבל שוב הכל תלוי בך.

ניסרתי חתיכה קטנה של מקל מטאטא וכרכתי סביבו חוט נחושת. הארדואינו יניע את חוט הנחושת הזה כל הזמן עם 5V. הלחמתי ארבעה קפיצי עט הצידה למגע טוב יותר עם הכדור.

הדרך שבה חסימות הניקוד פועלות היא שהכדור משלים מעגל שמוביל לסיכת קלט על הארדואינו. אז מה שעשיתי היה להדביק רדיד אלומיניום בתחתית המארז (לא לגעת בשטיח) ולחבר את נייר הכסף לסיכה בארדואינו. בכל פעם שהכדור פוגע בנחושת ובאלומיניום, המעגל הושלם והארדואינו יקבל אות.

חיברתי את כל בלוקי הניקוד יחד באמצעות רדיד האלומיניום, אך זכור כי הצד הדביק אינו מוליך חשמל.

שלב 5: הוספת Game Over Contact

הוספת איש הקשר למשחק
הוספת איש הקשר למשחק

בתחתית מכונת הפינבול, בין הכפכפים, הוספתי משחק על מגע. בכל פעם שהכדור פוגע במגע זה, השחקן יאבד כדור. הבנייה שעשיתי זהה מאוד לחסימות הציון. רק כאן השתמשתי בשני ברגים, ושוב פיסת רדיד אלומיניום בתחתית.

שלב 6: קידוח חורי הכבלים

קידוח חורי הכבלים
קידוח חורי הכבלים
קידוח חורי הכבלים
קידוח חורי הכבלים
קידוח חורי הכבלים
קידוח חורי הכבלים

לפני שנתחיל לחבר הכל לארדואינו, עלינו לקדוח קודם כל כמה חורים לכבלים. קידחתי חור בשתי חתיכות רדיד האלומיניום, כך שחור אחד ברדיד האלומיניום ליד גושי הניקוד וחור אחד ברדיד האלומיניום ליד המשחק על פני מגע.

חוץ מזה, קידחתי גם חור בצד שמאל למטה, בין הקירות, לכבל המוביל לשער סרבו הנוסף.

צריך להיות גם חור לכבל המחובר לתצוגה LCD בתחתית.

שלב 7: חיווט הכל

חיווט הכל
חיווט הכל
חיווט הכל
חיווט הכל

עשיתי סכמטי זה כדי לקבל סקירה טובה יותר של לאן כל הכבלים צריכים ללכת. הצלבים הם הנקודות שבהן כבלים מתחברים. ניסיתי להלחם כמה שאפשר כדי שהכל יהיה קצת יותר יציב ואמין. החיווט ייקח קצת זמן, אבל לאחר סיום זה אתה כמעט שם!

שלב 8: העלאת הקוד

העלה את הקוד הבא ל- Arduino שלך כדי לגרום למכונת הפינבול שלך להתקיים!

// כלול את הספרייה עבור ה- lcd

#כלול #כלול

// אתחל את סיכות הנתונים של lcd

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);

// צור סרוו

כדור סרווGateServo;

// צור משתנים עבור הסיכות בהן אנו משתמשים

int gameoverPin = 6; int scorePin = 5; int speakerPin = 4; int ballGateServoPin = 3;

// אתחל משתני משחק למכונת הפינבול

int score = 0; int highscore = 500; bool highscoreReached = false; int כדורים = 3; int gameoverTimer = 0; int gameoverTimerDuration = 100; bool gameoverTriggered = false;

// הפעל קוד זה פעם אחת במסגרת הראשונה

הגדרת void () {// הגדר את pinMode לפינים שבהם אנו משתמשים pinMode (gameoverPin, INPUT); pinMode (scorePin, INPUT);

// אתחל את ה- LCD על ידי מתן הרוחב והגובה

lcd.begin (16, 2);

// חבר את סרוו שער הכדור לסיכה המתאימה

ballGateServo.attach (ballGateServoPin);

// אפס את סרוו השער למצב ההתחלה

ballGateServo.write (0); }

// הפעל קוד זה בכל מסגרת

לולאת void () {// ללכוד את כניסות הסיכה int gameoverState = digitalRead (gameoverPin); int scoreState = digitalRead (scorePin);

// הוסף לניקוד אם תתקבל קלט

if (scoreState) {tone (speakerPin, 1000); ציון += 10; } אחר {noTone (4); }

// הפחת מהכדורים אם בור המשחקים מופעל

אם (gameoverState ו-! gameoverTriggered) {כדורים -= 1; gameoverTriggered = true; gameoverTimer = gameoverTimerDuration; }

// הפעל את טיימר המשחק לאחר שהכדור לא נוגע במגע המשחק

אם (! gameoverState) {if (gameoverTimer> = 1) {gameoverTimer -= 1; } אחר {gameoverTriggered = false; }}

// מצמצים את טקסט המשחקים ל- lcd ואפסו את הציון והכדורים

if (כדורים <= 0) {lcd.setCursor (0, 0); עבור (int i = 5; i> = 1; i--) {lcd.clear (); עיכוב (250); lcd.print ("GAME OVER"); lcd.setCursor (0, 1); lcd.print ("נסה שוב?"); עיכוב (250); } lcd.clear (); ציון = 0; ballGateServo.write (0); highscoreReached = false; כדורים = 3; }

if (score> highscore and! highscoreReached) {

lcd.setCursor (0, 0); עבור (int i = 5; i> = 1; i--) {lcd.clear (); עיכוב (250); lcd.print ("HIGHSCORE חדש"); lcd.setCursor (0, 1); lcd.print ("מוות פתאומי!"); עיכוב (250); } lcd.clear (); כדורים = 1; ballGateServo.write (120); ציון גבוה = ציון; highscoreReached = true; }

// עדכן את ציון השיא אם הציון הנוכחי גבוה יותר

if (ציון> ציון גבוה) {highscore = ציון; }

// הגדר את הסמן לשורה 0

lcd.setCursor (0, 0); // הדפס את הציון הנוכחי (הגבוה) ל- lcd if (הציון <= 0) {lcd.print ("Highscore:" + String (highscore) + ""); } אחר {lcd.print ("ציון:" + מחרוזת (ציון) + ""); }

// הגדר את הסמן לשורה 1

lcd.setCursor (0, 1);

// הדפס את כמות הכדורים הנוכחית ל- lcd

lcd.print ("כדורים:" + מחרוזת (כדורים)); }

מוּמלָץ: