תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
שיחקתי ב- Assetto Corsa עם בקר ה- Xbox 360 שלי. לרוע המזל, ההיגוי עם המקל האנלוגי הוא מאוד לא מסובך, ואין לי מקום להתקנת גלגלים. ניסיתי לחשוב על דרכים שבהן אוכל לנעול מנגנון היגוי טוב יותר לתוך הבקר, כאשר עלה בדעתי שאוכל להשתמש בבקר כולו כהגה.
למקל האנלוגי שני פוטנציומטרים. אחד מודד תנועה אנכית, ואחד מודד תנועה אופקית. הוא מעביר 1.6V בכל אחד מהם ומודד את המתח המיוצר במגב כדי לקבוע כמה המקל נע. המשמעות היא שניתן לשלוט בתנועת המקל על ידי הזנת מתח מסוים לסיכת המגב. (מידע נוסף כאן:
מוד זה משתמש ב- Arduino כדי לחשב את הזווית מקריאות מד התאוצה ולהמיר אותה לתנועת מקל אנלוגית באמצעות DAC. לכן הוא אמור לעבוד עם כל משחק שמשתמש במקל האנלוגי כקלט.
שלב 1: תזדקק ל:
כלים:
- מלחם
- לְרַתֵך
- פראייר/צמה הלחמה
- חשפן חוטים
- מברג, אולי אחד Torx בהתאם לברגים בבקר שלך (שלי הם צולבים)
- דבק (עדיף לא דבק חזק במיוחד כך שאפשר לפרק אותו מאוחר יותר)
- מתאם USB לטורי לתכנת ה- Arduino
חומרים:
- בקר Xbox 360 (אחי!)
- Arduino Pro Mini (או שיבוט) (רצוי 3.3V. אם תשתמש בגרסת 5V כנראה שתצטרך ממיר מתח מוגבר)
- ג'ירוסקופ/מד תאוצה MPU-6050
- DAC MCP4725 (שניים אם אתה רוצה לשלוט בשני הצירים)
- קצת חוט דק
- לוח לחם כך שתוכל לבדוק הכל לפני הלחמה (אופציונלי, אך מומלץ)
שלב 2: הפרד את הבקר
ישנם שבע ברגים שעליך להסיר. שישה מהם ברורים, אבל השביעי עומד מאחורי מדבקה. אני מניח שהסרתה מבטלת את אחריותך, לכן המשך באחריותך. הרבה מדריכים אומרים שאתה צריך מברג טורקס, אבל שלי הם צולבים, אז בדוק את הבקר שלך.
לאחר מכן, חטט בזהירות את הכריכה האחורית. אם תחטט מהחזית הכפתורים ישפכו החוצה וכנראה יעברו בכל החדר. הרם אותו מלמטה. לאחר מכן נתק את שני מנועי הרטט. (זה עם המשקל הקטן צריך להיות בצד שמאל, וזו עם המשקל הגדול מימין) הוצא את הלוח החוצה והסר את כובעי הגומי על המקלות האנלוגיים. הם פשוט מתרחקים.
הדבר הבא הוא להסיר את המקל האנלוגי השמאלי כך שהוא לא יפריע לקלט שלנו, אך מנגנון ההדק השמאלי הוא בדרך. על מנת להסיר אותו, עליך להסיר את שלושת הסיכות מהפוטנציומטר מחזית הלוח, ולאחר מכן לנתק את המנגנון מהלוח הלוח.
לאחר מכן, מותקים את 14 הסיכות המחזיקות את המקל האנלוגי השמאלי. ואז משוך את המקל.
שלב 3: הדבק את הרכיבים במקומם
תוכל להבחין שיש די הרבה אישור בין החלק האחורי של הלוח המודפס למארז. זה מאפשר להכניס את כל החומרה למארז מבלי להסיר דבר.
הבנתי רק מאוחר יותר, אבל זה יהיה זמן טוב להסיר את כפתור האיפוס בארדואינו. אם לא, הוא ילחץ על החלק האחורי של המארז ויגרום לפרויקט להפסיק לפעול אם אתה מהדק יותר מדי את אחד הברגים בעת הרכבתו מחדש.
הדבקתי חתיכת כרטיס דק בחלקו האחורי של כל PCB כדי לבודד אותו, והדבקתי אותו על ה- PCB של הבקר. לא היססתי להשתמש בדבק, אך לא יכולתי לחשוב על דרך טובה יותר לעשות זאת.
המיקומים בתמונה הם השילוב הטוב ביותר שיכולתי למצוא. הארדואינו נמצא משמאל, כשהקצה עם כפתור האיפוס סומק כנגד פיסת הפלסטיק ממנגנון ההדק הימני, כשהצד השני מתחת לחוט ועם הפינה קרוב ככל האפשר למחבר הלבן. יש מעט בליטה במקרה, אבל לא מצאתי מקום טוב יותר לשים אותו.
מד התאוצה נמצא מימין לחוט. זה צריך להיות שטוח וישר ככל האפשר, אחרת תצטרך לכתוב קוד מאוחר יותר כדי לפצות על הקיזוז. שימו לב כי בחלק האחורי של המארז יש כמה פיסות פלסטיק בולטות שעליכם להיזהר מהן. גיליתי שאתה יכול לשים משהו דביק וצבעוני, כמו שפתון, על פיסות הפלסטיק הבולטות ואז לשים את המכסה האחורי כדי לראות היכן הוא משאיר סימנים.
ה- DAC (ים) ממוקמים בפינה השמאלית התחתונה. יש כאן מספיק מרווח כדי לערום שני DACs, אחד על השני, אם אתה רוצה לשלוט בשני הצירים. אתה לא צריך להדביק אותם. הם יישארו היכן שהם נמצאים רק עם החיבורים המולחמים. אם אתה תוקע כרטיס ביניהם הקפד לחתוך את הכרטיס על מנת להשאיר את SCL, SDA, VCC ו- GND נגיש, מכיוון שתוכל לגשת אליהם משני הצדדים.
אם אתה משתמש בשני DAC, אל תשכח להחליף את מגשר הכתובות ולבטל את נגדי המשיכה באחד מהם, כפי שמתואר כאן: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -ממיר-חיבור-מדריך
שלב 4: הלחמת החוטים
עכשיו אתה צריך לחבר הכל. VCC, GND, SDA ו- SCL מכל 2/3 המכשירים צריכים להיות מחוברים ל- VCC, GND, A4 ו- A5 ב- Arduino, בהתאמה. DACs הם החלק המסובך ביותר. אם יש לך שניים, עליך לחבר אותם יחד, בעוד שאתה עוזב איפשהו אתה יכול לחבר את הכוח והקווים למד התאוצה, תוך שמירה על חוטי OUT נפרדים.
יש לחבר את סיכת ה- OUT ב- DAC לפין שעל הלוח של הבקר, שהיה בעבר עבור סיכת הפוטנציומטר האופקית האמצעית למקל האנלוגי. כלומר, היכן שהמקל האנלוגי היה בחלקו העליון של שורה של שלושה סיכות. חבר אותו לאמצע. אם יש לך DAC נוסף, חבר אותו לסיכת הפוטנציומטר האנכית (השורה משמאל) באותו אופן. לא תוכל להגיע לסיכות מהחלק האחורי בעת החלפת ההדק, כך שעליך להעביר חוט לחזית הלוח. סביב אזור המקל האנלוגי יש "קיר" פלסטי עגול, אך למרבה המזל יש בו פער נוח שאפשר לחבר אליו חוטים. וודא שהחוטים אינם מפריעים למוצב הברגים בחלקו הקדמי של המארז.
התוכנית המקורית שלי הייתה להפעיל את הארדואינו באמצעות ה -5 V מכבל ה- USB המחובר לסיכת RAW, אך כשניסיתי אותו, זה לא עבד. הארדואינו לא הפעיל כלום, וגם הארדואינו וגם הבקר כבו לאחר מספר שניות. עם זאת, גיליתי שיש פלט 3.3V יציב משני סיכות בחזית הלוח ליד השקע ההיקפי השחור, ככל הנראה להפעלת ציוד היקפי. זה עובד גם עם VCC וגם ב- RAW, אבל בחרתי ב- VCC כי זה כבר המתח הנכון ומכיוון שהוא מאפשר לי להלחם אותו לחוט VCC ב- DAC שכבר קרוב לתחתית הלוח ולחסוך בחוטים.
שים לב שיש הרבה חלקי פלסטיק הבולטים מהתיק שאתה צריך לעקוף, אבל אם אתה מדביק את החוטים במקומם, אתה רק צריך לדאוג להם פעם אחת.
את כל זה קשה לתאר במילים, לכן צירפתי תמונות ותרשים גס.
שלב 5: תכנת את הארדואינו
עכשיו אתה צריך לתכנת את הארדואינו. זה דורש הזזת כבל ה- USB בבקר, כך שתוכל לגשת לסיכות הסידריות של ה- Arduino. צירפתי את הקוד שבו השתמשתי. זה דורש את ספריית Adafruit MCP4725, שניתן למצוא כאן:
כפי שהוא, הקוד מאפשר לך לעבור את כל טווח התנועה של המקל האנלוגי באופן שווה על ידי הזזת הבקר 90 מעלות שמאלה עד 90 מעלות ימינה, ושמור אותו באמצע על ידי החזקת אותו שטוח.
הוא מקבל את זווית הבקר על ידי חישוב המשיק ההפוך של כוח G של ציר X מחולק בכוח G של ציר Z. המשמעות היא שהוא עובד אם הבקר אנכי, שטוח או כל זווית שביניהם. (מידע נוסף כאן:
זה עובד על הבקר שלי, אבל בקרים אחרים עשויים לדרוש מתחים שונים, ולהוציא אותו מהיישור. אני חושב שהדרך הטובה ביותר למצוא את טווח המתחים היא באמצעות ניסוי וטעייה. משחקים רבים יראו לכם מחוון לתנועת המקל האנלוגי, אך הדרך המדויקת ביותר שמצאתי לקבוע תנועה היא ב- jstest ב- Linux. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) הוא נותן לך מספר בין -32, 767 ו -32, 767 במקום גרפיקה, כך שתדע בדיוק היכן המקל. חבר את הבקר ואת מתאם ה- Arduino USB למתאם סידורי, טען את jstest ונסה ערכי DAC שונים עד שתגיע לחלק העליון והתחתון של הטווח, ורשום כל אחד מהם. בשבילי זה היה 1, 593 - 382.
מעניינת במיוחד קו 36:
dacvalue = (controllerangle + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5;
לא ברור מיד מה הוא עושה. פשוט, הוא לוקח את זווית הבקר (נמדד ברדיאנים ובין ~ 1.57 ל -1.57 ~) וממיר אותו לערך בין 1, 593 ו -382 עבור ה- DAC. אם יש לך טווח DAC אחר, יהיה עליך לשנות את השורה הזו.
ניתן לכתוב את השורה כך:
dacvalue = (controllerangle +) / + 0.5;
עם המספרים שאתה צריך לשנות. שווה לטווח זווית הבקר (pi) חלקי הטווח הכולל של ערכי DAC. (החלק העליון של הטווח מינוס החלק התחתון של הטווח) זה מביא אותך עד לשינוי המתח, למרות שהתוצאות יהיו מחוץ לטווח שאתה רוצה. בגלל זה אתה צריך. שווה להכפיל בתחתית הטווח פלוס מחצית מטווח התנועה של הבקר. (pi / 2) הוספת מחצית מטווח התנועה מוודאת שזה לא מספר שלילי, והוספת כפול בתחתית הטווח מוודאת שהוא מסונכרן עם הטווח הרצוי.
בעת המרת העשרוניים למספר שלם, C ++ אינו מעוגל. הוא במקום זאת מנתק את העשרוני, כך ש 9.9 הופך ל- 9. הוספת 0.5 בסוף מוודאת שמשהו מעל חצי יגיע למספר השלם הבא, כך שהוא יעוגל.
לאחר שהעלית את התוכנית שלך, וודא שהיא פועלת עם jstest.
שלב 6: הרכיב מחדש את הבקר
חבר את הבקר מחדש באותו אופן שבו פירקת אותו, מינוס המקל האנלוגי השמאלי. זה אמור לעבוד עכשיו. אני מוצא שאין עיכוב ניכר וזה הרבה יותר טוב משימוש במקל האנלוגי. מכיוון שהוא משתמש במד תאוצה, הוא מושפע מתנועות פתאומיות, אך עליך לצאת מגדרך כדי להבחין בכך.
שלב 7: שיפורים אפשריים
יש כמה שיפורים שניתן לבצע. אלו כוללים:
- שימוש בחוט מגנט פחות מסורבל
- חריטת הכל על לוח PCB אחד שנועד להתאים למארז הבקר
- חיבור מחדש של המקל האנלוגי השמאלי וחיבור הרגליים לכניסות האנלוגיות בארדואינו, כך שניתן להשתמש בהן להתאמת הארדואינו
- קבלת החלק האחורי לבקר אלחוטי והכנסת הפרויקט לתא הסוללה (הדבר יחייב חיתוך חור לכבל ה- USB)