תוכן עניינים:
- שלב 1: מה שאתה צריך
- שלב 2: בנייה: מרכז המסוף, הגדרת המגן
- שלב 3: בנייה: מרכז הקונסולה, חיווט המגן
- שלב 4: בנייה: הבקרים, הגדרת החלקים שלך
- שלב 5: אופציונלי: מארזים
- שלב 6: תכנות: ארדואינו
- שלב 7: תכנות: HTML
- שלב 8: תכנות: P5.js ו- Javascript
- שלב 9: הפעלת התוכנית
- שלב 10: התקדמות נוספת
וִידֵאוֹ: בקרי ארדואינו: 10 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
מערכת בקר משחקים של Arduino באמצעות Arduino וספריית p5.js. הרעיון של זה הוא ליצור פרויקט Arduino שניתן לשכפל ולהרחיב בקלות. חיבורי הבקר נועדו לנצל חבורה של חיישנים וכניסות שונים הניתנים להחלפה בהתאם לכל בקר.
פרויקט זה נועד גם לנצל את ספריית JavaScript p5.js יחד עם ספריית p5.play המיועדת ל- p5.js. ספריות אלה מאפשרות לנו לתכנת את המשחקים שלנו בקלות. באתר p5.play יש חבורה של הדרכות ודוגמאות למשתמשים ליצור משחקים עבורו. פרויקט זה מאפשר למשתמשים לתרגל את כישורי פיתוח החומרה והתוכנה שלהם.
שלב 1: מה שאתה צריך
כלים:
- מלחם
- לְרַתֵך
- חשפניות חוטים
- חותכי צד
- צְבָת
חוּמרָה:
- לוח תואם Arduino (השתמשתי בלוח Red Sparkfun וכן ב- Arduino Uno ו- Leonardo)
-
לוח פרפ:
- לוחות פרפר ירוקים בגודל 8 ס"מ על 6 ס"מ
- לוח פרפוק מגן Aduino Uno
-
חיישנים שונים
- ג'ויסטיקים
- לחצנים (עם נגדים, 10k אוהם, ללכת איתם)
- פוטנציומטרים
- חיישני גמישות
- חיישני לחץ
- וכו…
-
חוּט:
- חוט יחיד (השתמשתי 26 AWG מוצק)
- חוט סרט וקמטים
- כותרות פרידה (לפחות 20 כאלה)
-
חומרה אופציונלית (אתה יכול להשתמש בקרטונים ובעניבות דבק חם/רוכסן במקום):
- לוחות קרש ומגשרים לאב טיפוס
- מארזים מודפסים בתלת מימד
- מחברים לחומרה (השתמשתי בברגי M2.5)
תוֹכנָה:
- Arduino IDE
-
ספריית p5.js
ספריית P5.play גם כן
- p5.serialcontrol
- Node.js
שלב 2: בנייה: מרכז המסוף, הגדרת המגן
הלחם את הכותרות ללוח ה- perf מגן Arduino Uno.
- התחלתי עם כותרות המגן (כוח, אנלוגי ודיגיטלי)
- להלן סיכות הכותרת 2x5. אתה יכול להשתמש בכותרות 2x5, או רק בשתי שורות של 5 כותרות מתנתקות. סידרתי את אלה עם A3 ו- A4 אנכית, והשארתי 2 רווחים ביניהם.
שלב 3: בנייה: מרכז הקונסולה, חיווט המגן
לאחר מכן, אנו רוצים לנתב את החוטים שלנו על המגן. קל יותר להריץ את החוטים מלמעלה, אבל אם אתה רוצה מראה נקי יותר תוכל להפעיל אותם בחלק התחתון.
אתה רוצה לשים לב לסכימה (סכמטי הנשר זמין להורדה) בעת ניתוב חוטים אלה. תוכל גם להסתכל במדריך הצבעים שיעזור לך בכך.
הרעיון של עיצוב מגן זה הוא לאפשר 3 כניסות אנלוגיות ו -5 כניסות דיגיטליות מכל בקר. זה מנצל באופן מלא את כל הכניסות האנלוגיות ב- Un Arduino כמו גם את החוטים הנותרים בכבל הסרט שלנו.
שלב 4: בנייה: הבקרים, הגדרת החלקים שלך
השלב הראשון לבניית הבקר שלך הוא לתכנן באילו חיישנים להשתמש. בדוגמאות שלי, יש לי בקר די סטנדרטי עם ג'ויסטיק וכמה לחצנים. יש לי גם בקר עם שני פוטנציומטרים של מחוון.
אם אתה רוצה לשכפל את זה, אתה יכול להציג את התמונות שלי למיקום.
השלב הבא הוא הלחמת כבל הסרט שלך ללוח perf.
- רצו והדקו את כבל הסרט
- הלחם את כבל הסרט למרכז העליון של לוח הפרפ שלך.
השלב הבא הוא לנתב את החוטים שלך. התחלתי בחיווט החשמל (5V/חוט אדום) והקרקע (חוט חום) תחילה לחיישנים. לאחר מכן חיברתי את הכניסות האנלוגיות. מצאתי שקל להשתמש בכבל הכתום (אנלוגי A0 או A3) לתנועה אופקית ובכבל הצהוב (אנלוגי A1 או A4) לתנועה אנכית.
כדי לשמור על עקביות, חיברתי גם כפתור לחיצה קטן לסגול על כל הבקרים שלי. זה שימושי לדברים כגון סגירת היציאה הטורית (אעבור על זה מאוחר יותר) כמו גם תפריטים או אפשרויות.
העלתי סכמטי מהיר של בקר הג'ויסטיק שלי אם תרצה להסתכל על זה. מתרשים ה- pin-out שלנו, אתה יכול לראות את האפשרות של כל חיבור בקר (3 כניסות אנלוגיות ו -5 דיגיטליות).
שלב 5: אופציונלי: מארזים
שלב זה הוא אופציונלי, אך אם תהיה לך גישה למדפסת תלת מימד התוצאה של הפרויקט שלך תיראה מעט מעודנת ומוגמרת יותר. כפי שאתה יכול לראות באבות הטיפוס שלי, השתמשתי בחתיכת קרטון פשוטה כדי למנוע ממפרקי הלחמה בתחתית לוחות הפרפר לחטט באצבעותיך.
תוכל למצוא את דגמי התלת מימד שלי המצורפים לשלב זה. יצרתי מארזים לרכזת הן ל- Arduino Uno/Leonardo והן ל- Sparkfun RedBoard (הלוח הזה קצת יותר רחב ומשתמש במיני USB).
עבור הבקרים, ניתן לחבר אותם באמצעות ברגי M2.5. שמרתי את האום בצד הלוח והמשתמש במכונת כביסה ובברג בתחתית.
כללתי גם את דגם התלת -ממד של מחוונים הכפתורים עבור הפוטנציומטרים בהם השתמשתי.
אתה יכול למצוא את כל קבצי התלת -ממד ב- GitHub.
שלב 6: תכנות: ארדואינו
נתחיל בלהקים סקיצה פשוטה לבדיקה. אני מציע להשתמש במדריך שנוצר על ידי ITP ב- NYU שנמצא כאן. כדי לבצע הדרכה זו, יהיה עליך להתקין p5.serialcontroll ו- node.js. במדריך זה תתוודע להגדרת Arduino לשליחת נתונים סדרתיים הניתנים לשימוש על ידי ספריית javascript שלנו, p5.js. אתה יכול להשתמש ברכזת ובקר שיצרנו בשלבים הקודמים לשם כך, או שתוכל לשכפל את המעגלים שהוכחו במדריך. הדרכה זו משתמשת בסיכת הכניסה האנלוגית A0 ב- Arduino Uno אשר ממופה לחוט הכתום של הבקר הראשון שלך.
את ההדרכה הבאה שתרצה לעקוב אחריה תוכל למצוא כאן. מדריך זה ינחה אותך בהגדרת תשומות מרובות וניצולן ב- p5.js. במדריך נעשה שימוש בכניסות האנלוגיות A0 ו- A1. אלה יתאימו לחוטים הכתומים והצהובים בבקר 1 של המערכת שלנו.
לאחר שעברת את ההדרכות למעלה, נוכל לתכנת את הארדואינו. הקוד בו נרצה להשתמש הוא להלן:
// בקר 1 קונסט int int dig2 = 2; // כחול const int dig3 = 3; // סגול const int dig4 = 4; // אפור const int dig5 = 5; // const const int dig6 = 6; // שחור // בקר 2 const int dig7 = 7; // כחול const int dig8 = 8; // סגול const int dig9 = 9; // אפור const int dig10 = 10; // const const int dig11 = 11; //שָׁחוֹר
הגדרת בטל () {
Serial.begin (9600); while (Serial.available () <= 0) {Serial.println ("שלום"); // לשלוח עיכוב של הודעת התחלה (300); // המתן 1/3 שנייה} pinMode (dig2, INPUT); pinMode (dig3, INPUT); pinMode (dig4, INPUT); pinMode (dig5, INPUT); pinMode (dig6, INPUT); pinMode (dig7, INPUT); pinMode (dig8, INPUT); pinMode (dig9, INPUT); pinMode (dig10, INPUT); pinMode (dig11, INPUT); }
לולאת חלל () {
if (Serial.available ()> 0) {// קרא את הבייט הנכנס: int inByte = Serial.read (); // קרא את החיישן:
// בקר ANALOG 1
int analog0 = analogRead (A0); int analog1 = analogRead (A1); int analog2 = analogRead (A2); // בקר ANALOG 2 int analog3 = analogRead (A3); int analog4 = analogRead (A4); int analog5 = analogRead (A5); // בקר DIGITAL 1 int digital2 = digitalRead (dig2); int digital3 = digitalRead (dig3); int digital4 = digitalRead (dig4);
int digital5 = digitalRead (dig5);
int digital6 = digitalRead (dig6); // בקר DIGITAL 2 int digital7 = digitalRead (dig7); int digital8 = digitalRead (dig8); int digital9 = digitalRead (dig9); int digital10 = digitalRead (dig10); int digital11 = digitalRead (dig11); // הדפס את התוצאות: Serial.print (analog0); // [0] Serial.print (","); Serial.print (אנלוגי 1); // [1] Serial.print (","); Serial.print (אנלוגי 2); // [2] Serial.print (","); // Start Controller 2 data Serial.print (analog3); // [3] Serial.print (","); Serial.print (אנלוגי 4); // [4] Serial.print (","); Serial.print (אנלוגי 5); // [5] Serial.print (","); Serial.print (digital2); // [6] Serial.print (","); Serial.print (digital3); // [7] Serial.print (","); Serial.print (digital4); // [8] Serial.print (","); Serial.print (digital5); // [9] Serial.print (","); Serial.print (digital6); // [10] Serial.print (","); // התחל בקר 2 נתונים Serial.print (digital7); // [11] Serial.print (","); Serial.print (דיגיטלי 8); // [12] Serial.print (","); Serial.print (digital9); // [13] Serial.print (","); Serial.println (digital10); // [14] Serial.print (","); Serial.println (digital11); // [15]}}
קוד זה שולח את הנתונים הטוריים משני הבקרים שלנו כמערך של 16 מספרים. ששת המספרים הראשונים הם הכניסות האנלוגיות שלנו (הנעים בין 0-1023) ו -10 הערכים הנותרים הם הערכים הדיגיטליים שלנו (0 או 1).
לאחר העלאת הקוד שלנו, נוכל לבדוק זאת על ידי פתיחת הצג הטורי והקלדת ערך לתוך הצג הטורי שלנו כפי שעשינו במדריך השני מ- ITP. עלינו לקבל מחרוזת של הערכים שלנו מופרדים בפסיקים.
שלב 7: תכנות: HTML
לאחר שנעשה את העבודה והארדואינו, נוכל להתחיל לתכנת את חומרי הרשת שלנו. קוד ה- HTML פשוט מאוד.
גוף {ריפוד: 0; שוליים: 0;}
קוד html פשוט מקשר את קבצי ה- javascript שלנו יחד. רוב הקוד שלנו יקרה בפועל בקובץ ה-.js של הסקיצה שלנו.
שלב 8: תכנות: P5.js ו- Javascript
לאחר שהגדרנו את ה- HTML שלנו, נוכל לעבוד על JavaScript שלנו. אם עדיין לא עשית זאת, עליך להוריד את p5.js וכן את p5.play ולהוסיף אותם לתיקיית הספריות שלך בספריית האתר שלך.
- p5.js
- p5.play
בשלב הקודם הגדרנו את קובץ ה- HTML שלנו כך שיתקשר לספריות p5.js ו- p5.play שלנו. הגדרנו אותו לשימוש בקובץ sketch.js שלנו, שם נבצע את רוב התכנות שלנו. להלן הקוד לשלד שלנו. תוכל למצוא אותו גם כאן.
// Serial Variablesvar סדרתי; // משתנה בכדי להחזיק מופע של ספריית הסדרות הספורט var portName = 'COM4'; // מלא את שם היציאה הטורית שלך כאן // משתני משחק גלובליים ---------------
// פונקציית התקנה ----------------------
הגדרת פונקציות () {createCanvas (640, 480); serial = new p5. SerialPort (); // צור מופע חדש של ספריית הסדרת היציאות serial.on ('list', printList); // הגדר פונקציית התקשרות חזרה לאירוע רשימת הסדרות הטורקיות serial.on ('מחובר', serverConnected); // callback לחיבור לשרת serial.on ('open', portOpen); // שיחה חוזרת לפתיחת היציאה serial.on ('data', serialEvent); // התקשרות חזרה כאשר נתונים חדשים מגיעים serial.on ('error', serialError); // החזרה לשגיאות serial.on ('close', portClose); // התקשרות חוזרת ליציאה הסופרת serial.list (); // רשום את היציאות הטורקיות serial.open (portName); // פתח יציאה טורית} // פונקציית צייר ----------------------- פונקציה ציירה () {רקע (0); // רקע שחור} // פרש כאן נתונים סדרתיים ---------- פונקציה serialEvent () {// קרא מחרוזת מהיציאה הטורית // עד שתקבל החזרה לכרכרה ו- newline: var inString = serial. readStringUntil ('\ r / n'); // בדוק אם יש שם למעשה ssetring: אם (inString.length> 0) {if (inString! == 'שלום') {// אם אתה מקבל שלום, התעלם ממנו var sensors = split (inString, ', '); // לפצל את המחרוזת בפסיקים אם (חיישנים.אורך> 16) {// אם ישנם שישה עשר אלמנטים (6 אנלוגיים, 10 דיגיטליים) // השתמשו בנתוני חיישנים כאן:
}
} serial.write ('x'); // שלח בת לבקש עוד נתונים סדרתיים}} // קבל את רשימת היציאות: function printList (portList) {// portList הוא מערך של שמות יציאות טוריות עבור (var i = 0; i <portList.length; i ++) {// הצג את הרשימה במסוף: print (i + "" + portList ); }} function serverConnected () {print ('מחובר לשרת.'); } function portOpen () {print ('הנמל הסידורי נפתח.')} function serialError (err) {print ('משהו השתבש ביציאה הטורית.' + שגיאה); } function portClose () {print ('היציאה הסדרתית סגורה.'); } פונקציה סגירת קוד () {serial.close (portName); להחזיר null; } window.onbeforeunload = סגירת קוד;
ברגע ששמרת את השלד. אתה יכול להשתמש בערכים אלה באופן שבו בוצע במדריך ITP. מחרוזת הערכים ששלחנו מהארדואינו שלנו בשלב 6 נשלחים כמערך של 16 מספרים. להלן המקום שבו אנו מנתחים את המערך הזה.
// לפרש כאן נתונים סדרתיים ----------
פונקציה serialEvent () {// לקרוא מחרוזת מהיציאה הטורית // עד שתקבל החזרה לכרכרה ו- newline: var inString = serial.readStringUntil ('\ r / n'); // בדוק שיש שם למעשה ssetring: אם (inString.length> 0) {if (inString! == 'שלום') {// אם אתה מקבל שלום, התעלם מזה var sensors = split (inString, ', '); // לפצל את המחרוזת בפסיקים אם (sensors.length> 16) {// אם ישנם שישה עשר אלמנטים (6 אנלוגיים, 10 דיגיטליים) // השתמשו בנתוני חיישנים כאן:}} serial.write ('x'); // שלח בתים המבקש נתונים טוריים נוספים}}
כעת אנו יכולים להריץ את התוכנית שלנו כדי לראות אם היא עובדת!
שלב 9: הפעלת התוכנית
כעת נוכל להריץ את התוכנית כדי לראות אם היא עובדת. אתה יכול ליצור משחק משלך באמצעות קובץ skeleton.js בקובץ הקודם שלנו או להשתמש במשחק הצינור הפשוט שנמצא כאן.
בדומה למעבדת ITP, כדי להפעיל את התוכנית שלנו, נבצע את השלבים שלהלן.
- חבר את ה- Arduino עם הבקר (ים) שאתה מתכוון להשתמש בו.
- פתח את p5.serialcontrol
- שנה את הפורט של סקיצת p5 שלך לזה שאתה משתמש (אם אתה משתמש בשלד, זה נמצא בקו 3)
- פתח את קובץ ה- HTML המקשר למערכון p5 שלך
אם יש לך מדיה חיצונית כגון תמונות או גופנים שהורדת, תרצה להפעיל זאת בשרת. אתה יכול להריץ שרת פייתון מקומי פשוט אם תרצה.
שלב 10: התקדמות נוספת
כדי להמשיך ולפתח משחקים נוספים לשם כך, תוכל לעקוב אחר דוגמאות שונות מטופס p5.play שנמצא כאן. להלן דוגמה למשחק מסובך יותר שיצרתי. זהו משחק יריות טנקים 1 מול 1. אתה יכול למצוא את כל המשאבים עבור זה ב- GitHub.
מוּמלָץ:
כיצד להכין משחק מרובה משתתפים עם בקרי ארדואינו: 6 שלבים
איך יוצרים משחק מרובה משתתפים עם בקרי ארדואינו: האם תהית פעם כיצד מפתחי משחקים יוצרים משחקים מדהימים שאנשים ברחבי העולם נהנים לשחק? ובכן, היום אני אתן לך רק רמז קטן על כך על ידי יצירת משחק מרובה משתתפים קטן שנשלט על ידי קונטרו של Arduino
אירובי ארדואינו - כוח מעקב כושר בסך 15 $ על ידי ארדואינו: 9 שלבים (עם תמונות)
אירובי ארדואינו - כוח עוקב אחר כושר בסך 15 $ על ידי ארדואינו: אנא הצביעו לזה באתגר הכושר במקום Fitbit או שעון חכם, תוכלו לבנות גשש כושר המונע על ידי Arduino ב -15 $ בלבד! הוא עוקב אחר תנועת השאיבה של זרועותיך בזמן ריצה ומשתמש במד תאוצה כדי לזהות זאת. זה
ספינת קרב חלל יאמאטו 2199 עם בקרי מיקרו תכשיטים: 8 שלבים (עם תמונות)
ספינת קרב החלל יאמאטו 2199 עם בקרי מיקרו מסוג Trinket: בגלל הגרסה המחודשת של האנימציה והסרט של ספינת הקרב החללית יאמאטו, בנוסף לעיצוב האטרקטיבי של דגם בנדאי. זה גורם לי לעניין לבנות שוב את דגם ספינת הקרב בחלל הזה. בנדאי לא הזכיר את קנה המידה שלו, אולי ~ 1: 2500 לפי הערכה
הבנת ICSP עבור בקרי מיקרו PIC: 4 שלבים (עם תמונות)
הבנת ICSP עבור מיקרו -בקרי PIC: תכנות בקרי -מיקרו אינם קשים. בניית מתכנת עושה פרויקט אלקטרוניקה ראשון נהדר. מטרתו של מדריך זה היא להסביר את השיטה הפשוטה של 'תכנות סדרתי במעגל' המשמשת PICs של שבב
כיצד להלחים בצורה מסודרת (ללא המון חוטים!) ניתוק מכסים על מיקרו -בקרי SMT .: 9 שלבים (עם תמונות)
כיצד להלחים בצורה מסודרת (ללא המון חוטים!) ניתוק מכסים על מיקרו -בקרי SMT: הוראה זו כתובה כדי ללמד אותך כיצד להשתמש בשיטה מסודרת ומסודרת של אבות טיפוס עם מיקרו -בקרי SMT (או מכשירים אחרים) על לוח מתאם. לאחר שהתאמצתי לבצע עבודה מסודרת של ניתוק יעיל של סיכות החשמל ב- PIC18F שלי אני