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

בקר משחק Arduino עם אורות המגיבים למשחק האחדות שלך :: 24 שלבים
בקר משחק Arduino עם אורות המגיבים למשחק האחדות שלך :: 24 שלבים

וִידֵאוֹ: בקר משחק Arduino עם אורות המגיבים למשחק האחדות שלך :: 24 שלבים

וִידֵאוֹ: בקר משחק Arduino עם אורות המגיבים למשחק האחדות שלך :: 24 שלבים
וִידֵאוֹ: אורגן אורות 2024, נוֹבֶמבֶּר
Anonim
בקר משחק Arduino עם אורות המגיבים למשחק האחדות שלך
בקר משחק Arduino עם אורות המגיבים למשחק האחדות שלך

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

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

אלה האונו והלאונרדו

בסך הכל זה מה שתצטרך כדי לפרסם את הפרויקט הזה.

· 7 כפתורי לחיצה

· 23 חוטי מגשר

· כבל ארדואינו אחד לאונרדו + USB

· 4 נגדים · 4 לדים

· כבל arduino uno + usb

· 2 לוחות לחם

שלב 1: חיבור לחצני הבקרה ל- Arduino

חיבור לחצני הבקרה ל- Arduino
חיבור לחצני הבקרה ל- Arduino

מה תצטרך כדי לחבר את החלק הזה:

· 7 כפתורי לחיצה

· 14 חוטי מגשר

· כבל ארדואינו אחד לאונרדו + USB

· קרש לחם

הכפתורים די פשוטים לחיבור אבל יכולים להפוך במהירות לבלגן להצגה בצורת תמונה.

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

· שנית אתה רוצה לחבר מגשר מהחריץ הקרקעי על הארדואינו לאונרדו לשורת המינוס של לוח הלחם.

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

· בשלב הבא אתה רוצה לחבר חוט מגשר משורה שתואמת את הסיכה השמאלית של כפתור הלחיצה שלך לחריצי הכניסה הדיגיטליים של לאונרדו. לכפתורים כאן השתמשתי בחריץ 2 - 3 - 4 - 5 - 6 - 7- 8

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

שלב 2: קידוד הארדואינו לאונרדו:

קידוד הארדואינו לאונרדו
קידוד הארדואינו לאונרדו

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

עכשיו אני הולך ללכת חשבת את הקוד שלב אחר שלב.

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

שלב 3:

תמונה
תמונה

לאחר מכן עלינו להגדיר את חריצי הקלט הדיגיטליים בהם נשתמש

לאונרדו לכל כפתור.

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

שלב 4:

תמונה
תמונה

משם אנו נכנסים לפונקציית ההתקנה. זה אומר ל

arduino מה זה עושה בעת ההפעלה.

תחילה נכתוב את Serial.begin שיפתח את היציאה הטורית ויגדיר את קצב הנתונים ל -9600 bps

ואנו מגדירים שכולם נקראים סיכות ככניסות.

שלב 5:

תמונה
תמונה

ולבסוף אנו כותבים את פונקציית הלולאה שלנו שתבדוק אם

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

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

שלב 6:

תמונה
תמונה
תמונה
תמונה
תמונה
תמונה

ואז על כל כפתור אנו כותבים הצהרת אם/אחרת שהולכת כך

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

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

שלב 7:

תמונה
תמונה

המפתחות שאמרנו למחשב להקיש כאן הם W - A - S - D אשר

הם פחות או יותר הסטנדרט לתנועה במשחקי מחשב ו- E-Q-ומרווח הרווח שבקוד הזה מוכר כ''אלה שהם הכפתורים שבהם אני משתמש כדי לאסוף-לפטר ולירות במשחק שלי. אל תהסס לשנות אותם לכל המפתחות שאתה מרגיש שעובדים טוב יותר עבור המשחק/הבקר שלך.

ואז לבסוף אנו אומרים לארדואינו להפסיק את בדיקת המקלדת

שלב 8: תנועת קידוד באחדות:

תנועת קידוד באחדות
תנועת קידוד באחדות

קודם כל תן לי להגיד לך שאני מכין את זה למשחק דו -ממדי

הדוגמאות שאתה עומד לראות בנויות לכך. כלומר בעיקר היכן אני משתמש ב- vector2 אם אתה עובד בתלת מימד תשתמש ב- vector3. כי תצטרך לדאוג לגבי מימד תנועה נוסף בתלת מימד.

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

אם אתה פותח את הפרויקט שלך באחדות עבור לעריכה -> הגדרות פרוייקט -> קלט. אתה יכול לראות במפקח שלך שהוא מגביר את מנהל הקלט. כאשר אתה לוחץ על Axes אתה יכול לראות חבורה שלמה של שמות קלט שנפתחים המשמשים בדרך כלל לבקרי מחשב כמו אלה שאנו מייצרים כעת. 2 הכניסות בהן אנו הולכים להשתמש הן אופקי ואנכי אשר בודקות אם ניחשתם שזה W-A-S-D.

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

שלב 9:

תמונה
תמונה

אתה רוצה לתת לשחקן הזה 2 דברים. מתנגש תיבה 2d ו

a Rigidbody 2d וערוך אותם כך שיהיו כמו התמונה למעלה.

שלב 10:

תמונה
תמונה

אז אתה רוצה להיכנס לתיקיית הפרויקטים שלך וליצור א

תסריט C#. אשר קראתי לו PlayerMovement.

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

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

שלב 11:

תמונה
תמונה

עכשיו ב- Start () שלך אתה רוצה לעשות דבר אחד וזה

ודא שה- RigidPlayer שלך יכול למצוא את המשלם שלך rigidbody 2d. אתה עושה את זה עם שורת הקוד הבאה:

שלב 12:

תמונה
תמונה

לאחר מכן נעבור לעדכון (). הנה לאן אנחנו הולכים

לגרום לשחקן לזוז.

אנחנו עושים את זה עם אמירה פשוטה למדי שתסתכל על המפתחות השליליים והחיוביים מהאופקי (AD) והאנכי (SW) וניישם את זה כמספר כדי לאלץ שאנחנו הולכים לשים את הגוף הנוקשה שלנו כדי לדחוף את השחקן שלנו פנימה כיוון. מספר זה יוכפל במשתנה moveSpeed.

שלב 13:

תמונה
תמונה

לבסוף אתה רוצה לוודא שהשחקן שלך מפסיק לזוז כאשר

אתה לא לוחץ על כלום. זה אתה כל כך אוהב:

עכשיו אם אתה רוצה להשתמש ב -3 הכפתורים האחרים שלך עבור כל דבר שאתה עושה עם המשפט הזה אם: if (Input. GetKeyDown (Keycode. Space))

עבור מקש הרווח ובמקום הרווח את האות של המקשים האחרים שבחרת להשתמש בהם עבור המקשים האחרים.

שלב 14: חיבור אורות לארדואינו

חיבור אורות לארדואינו
חיבור אורות לארדואינו

·

מה תצטרך כדי לחבר את החלק הזה:

· 9 חוטי מגשר

· 4 נגדים

· 4 לדים

· כבל arduino uno + usb

· קרש לחם

החיבור לאורות ייעשה באמצעות ה- Uno.

בסופו של דבר זה ייראה כמו התמונה הזו למעלה:

אתה מחבר את הנגדים לצד הארוך של הלדים. ואז אתה מחבר מגשר ממספר סיכה דיגיטלי ב- uno לנגדים. במקרה זה השתמשתי בחריצי פינים דיגיטליים 9 -10 -11 -12 המספרים האלה יהיו רלוונטיים כאשר נגיע לקוד של האורות.

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

אז אתה רוצה שיהיו 4 מגשרים שיובילו לקצה הקצר של כל LED

שלב 15: קידוד ה- Arduino Uno

קידוד ה- Undu Arduino
קידוד ה- Undu Arduino

בסדר קודם כל אנחנו הולכים להגדיר את המשתנים שלנו שוב

אז ראשית באילו תשומות דיגיטליות אנו משתמשים עבור האורות שלנו. ואנחנו הולכים להכין חריטה בשם myCol [20]

שלב 16:

תמונה
תמונה

לאחר מכן בהגדרה אנו רוצים לבצע את Serial.begin שוב. שים את כל נוריות ה- LED שלנו על פלט וכבה את כולן בעת ההפעלה.

שלב 17:

תמונה
תמונה

ולבסוף אתה רוצה לכתוב את פונקציית הלולאה שלך.

זה יגרום ל- Arduino לקרוא את כל הנתונים שיגיעו דרך סדרתי עד שיקרה אחד משני אירועים. או זוהה תו הזנת שורה; זה מזוהה על ידי lf שמוגדר ל -10 והוא הארגומנט הראשון או שכמות מסוימת של בתים נקראה. זהו הארגומנט השלישי ולדוגמה זו מוגדר לבייט אחד בלבד. הנתונים מאוחסנים במשתנה myCol, אשר מוגדר ל- char ומגבלה של 20. ב- readBytesUntil זהו הארגומנט השני. או דרך אחרת להסביר זאת היא Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

והצהרות ה- if יוודאו שאורות מסוימים נדלקים כאשר האחדות נותנת את האות. במקרה זה קיבלתי 4 נורות בצבעים שונים ולכן אני גורם לאחדות לשלוח g כדי שהנורית הירוקה תידלק, b עבור הנורית הכחולה להדלק, r עבור הנורית האדומה להדלקה ו- y להדלקת הנורית הצהובה.

שלב 18: אורות קידוד צד אחדות:

צד אחדות של אורות קידוד
צד אחדות של אורות קידוד

אוקיי קודם כל 2 דברים לפני שנכנס לזה.

1. בתוכנית הקידוד של arduino שלך, עבור אל Tool -> Port -> ובדוק בשבילי באיזה COM האוניו שלך נמצא. במקרה שלי ה- COM3 שלו (זה יהיה חשוב בקוד)

2. באחדות עבור אל עריכה -> הגדרות פרוייקט -> נגן ואז במפקח לחץ על הגדרות אחרות עבור לרמת תאימות Api והעבר אותה מרשת תת. NET 2.0 לרשת. NET 2.0 בלבד.

אוקיי זה נגמר. בואו ניכנס לזה.

קליק ימני על ההיררכיה שלך ולחץ על צור ריק.

זה יהיה אובייקט משחק ריק שרק יתקיים במשחק שלך כדי להחזיק תסריט אחד בשבילנו. קראתי לאובייקט זה Init.

שלב 19:

תמונה
תמונה

לאחר מכן היכנס ללשונית הפרויקטים שלך וצור סקריפט C# חדש

וקוראים לזה שליחה.

הדבר הראשון שאתה עושה הוא לכתוב את זה לשורות בחלקים המשתמשים בקוד שלך:

שימוש ב- System. IO. Ports;

שימוש ב- System. Threading;

זה גורם לזה שנוכל להשתמש במשתנה SerialPort

שלב 20:

תמונה
תמונה

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

שלב 21:

תמונה
תמונה

בהתחלה אנו אומרים שהתסריט לשימוש הוא OpenConnection

פונקציה אותה אנו הולכים לכתוב מעט

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

שלב 22:

תמונה
תמונה

אוקיי עכשיו לפונקציית OpenConnection הזו. זה פשוט גדול

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

שלב 23:

תמונה
תמונה

עכשיו זכור מקוד הארדואינו שעשיתי לו לבדוק

מסמן שאחדות תשלח אליה.

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

שלב 24:

תמונה
תמונה

אתה אולי תוהה איך אני יכול לקרוא לזה

פוּנקצִיָה? ובכן, אתה עושה את זה עם שורה פשוטה בכל אחד מסקריפטים אחרים של c# שבהם אתה משתמש למשחק שלך. Sending. NameFunctionhere ();. כך למשל במשחק שלי השחקן מופקד על איסוף 4 כדורים צבעוניים. אז כתבתי תסריט קטן שמוודא שכאשר הוא מתקרב לאחד ולוחץ על הכפתור הימני הוא מרים אותו וזה שולח את האות לארדואינו שבמקרה הזה הכדור הצהוב נאסף. כדי שזה יידע, אוקיי אני חייב להדליק את הנורית הצהובה:

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

מוּמלָץ: