מציאות רבודה ומשחקים וירטואליים הפכו למגמה לאחרונה בענף המשחקים. זמני השימוש במקלדת / ג'ויסטיק ובעכבר למשחק משחק מחשב הלכו מאחור. כעת כל קונסולת משחק מגיעה עם בקר וירטואלי שעוזר לנו לשחק במשחק באמצעות תנועות הגוף והמחוות שלנו, כך חוויית המשחק גדלה מאוד והמשתמש מרגיש מעורב יותר במשחק.
בפרויקט זה בואו ננסה ליהנות כשנלמד דרך הפרויקט. תנו לנו ליצור משחק (כן שמעתם אותי נכון אנחנו יוצרים משחק) ונשחק אותו באמצעות התנועה של היד שלכם. אנו יוצרים את משחק הכדור פינג פונג הקלאסי באמצעות Arduino ו- Accelerometer.
סקירה כללית:
ישנן טונות של תוכנות קוד פתוח הזמינות בימינו אשר הביאו המון אושר לחובבים כמונו, ועיבוד הוא אחד מהם. באמצעות יישום מבוסס JAVA זה אנו יכולים לבנות תוכנה משלו (פורמט.exe) וגם יישום אנדרואיד (קובץ.apk). אז אנחנו הולכים להשתמש בתוכנה זו כדי לבנות את המשחק שלנו, בעבר השתמשנו בעיבוד ביצירת חדר צ'אט של Arduino.
חלק החומרה יורכב מארדואינו אשר יביא את הקלט ממאיץ כדי להזין אותו באופן סדרתי למחשב / מחשב נייד שלנו.
אז בואו נלך לקניות !!!!
רכיבים נדרשים:
- Arduino (כל גרסה או דגם)
- מד תאוצה
- חוטי חיבור
- עניין (לולץ)
מד תאוצה וארדואינו ננו
הסבר מעגל:
המעגל של פרויקט משחק הכדור פינג פונג של ארדואינו אינו כולל קשרים מורכבים. השתמשתי בארנו-ננו עם תאוצה. אך יש מעט דברים שצריך לטפל בהם כאמור להלן:
1. מד התאוצה שלך אינו יכול להתמודד עם 5 וולט, לכן חבר תמיד את ה- Vcc של מד התאוצה לסיכת ה- Arduino של 3.3 וולט שלך.
2. כל אקסלומטר סובל מהשפעת כוח המשיכה שיש לטפל בה במהלך התכנות (פשוט באמצעות פילטר).
עם זאת בחשבון בואו נבדוק את העבודה של מד התאוצה וכיצד אנו משתמשים בה.
עבודה של תאוצה:
Accelerometer הוא מכשיר אשר יכול להמיר אצה בכל כיוון כדי המתח משתנה בהתאמה שלה. זה נעשה באמצעות קבלים (עיין בתמונה), כאשר תנועת התא, הקבל הנמצא בתוכו, יעבור גם שינויים (עיין בתמונה) בהתבסס על התנועה, מכיוון שהקיבול הוא מגוון, ניתן גם לקבל מתח משתנה.
לכן, כאמור לעיל כל מד תאוצה סובל מבעיית אפקט הכבידה. לא משנה עד כמה מכויל את החיישן שלכם (אפילו הטלפונים האפליים שלכם מואצים), הוא יושפע מכוח המשיכה. הסבר טכני יותר לבעיה זו מובא להלן.
כעת, בארדואינו אנו יכולים להפחית את השפעת כוח המשיכה באמצעות פילטר פשוט. מסנן זה יורכב משני מערכים, האחד משמש לאחסון ערכי הדגימה מהחיישן והשני משמש למיון ערכי הדגימה, ומציאת הערך החוזר ביותר. תן לנו ליישם את האלגוריתם הזה בארדואינו ולהכין את החומרה שלנו.
תכנות Arduino:
תוכנית Arduino מובאת להלן בסעיף קוד. אין נתונים קריטיים שיש לשנות. אך כדאי לשקול את הדברים הבאים:
הגדל את גודל המדגם אם ה- Accel שלך עדיין מציג ערכים אקראיים.
#define דוגמת גודל 13 // filter מספר לדוגמא
שחקו בקצב השידור של 9600 כדי להגביר את מהירות התקשורת בין ארדואינו לעיבוד. אך הקפד לשנות אותם בשתי התוכנות (תוכניות).
הגדרת חלל () {Serial.begin (9600); }
ה- Accelerometer שלי על ציר ה- X נותן 193 בקצה השמאלי הרחוק ו- 280 בקצה הימני הקיצוני, מדוד אותם עבור ה- Accel שלך ועדכן את הערך.
toSend = מפה (smoothData1, 193, 280, 0, 255);
הערכים ממופים לבית נתונים יחיד לתקשורת סדרתית.
בדוק עוד את ההערות בקוד הנתון להלן כדי להבין זאת בצורה ברורה.
עיבוד תכנות:
עיבוד הוא תוכנת קוד פתוח המשמשת אמנים לעיצוב גרפיקה. תוכנה זו משמשת לפיתוח תוכנות ויישומי אנדרואיד. זה די קל לפיתוח ודומה מאוד ל- IDE לפיתוח אנדרואיד. מכאן שקיצרתי את ההסבר.
קוד העיבוד למשחק הפינג פונג ניתן כאן:
- קוד עיבוד למשחק כדור פינג ארדואינו
לחץ עליו לחיצה ימנית ולחץ על 'שמור קישור כ…' להורדת קובץ הקוד. לאחר מכן פתח את הקובץ בתוכנת 'עיבוד' ולחץ על כפתור 'הפעל' כדי לשחק במשחק. עליך להתקין את תוכנת 'עיבוד' כדי לפתוח קבצי *.pde. קטע ההערות פתוח לשאילתות ובדוק גם את ההערות בתוכנית כדי להבין זאת טוב יותר.
מתחת לשורה, בפונקציה setup () הריק של קוד עיבוד חשוב, מכיוון שהוא מחליט מאיזו יציאה לנתונים.
port = חדש סידורי (זה, Serial.list (), 9600); // קורא את הנמל הרביעי ב 9600 baudrate
הנה קראתי נתונים מהיציאה הרביעית מהארדואינו שלי.
אז לדוגמא אם יש לך COM COM COM COM COM
ואז הקוד לעיל יקרא נתונים מ- COM.
בדיקה:
כעת מכיוון שסקישת העיבוד והארדואינו שלנו מוכנה, פשוט העלו את התוכנית הנתונה למטה לארדואינו וחברו את ה- Arduino לכבל תכנות יסודי של מחשב המשתמש והפעלו את המשחק על ידי הפעלת קובץ קוד העיבוד (. זהו זה! הזז את התאוצה שלך והפעל את משחק הפינג פונג שלך. הווידאו ינחה אותך להשלים את הפרויקט.
לאחר שהבנתם את התוכנית תוכלו ליצור משחקים דומים רבים ולשחק בהם באמצעות הארדואינו שלכם. בנוסף, ציר ה- Y וציר ה- Z עשויים להיכלל גם למשחקים.