תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
ממיר אותות PPM ממקלט רדיו לעמדות ג'ויסטיק
השתמש בו כדי לשחק את המשחקים האהובים עליך וסימולטור טיסה עם משדר הרדיו R/C שלך. הוראה זו משתמשת בארדואינו מ- LittleBits ומקלט DSMX בתוספת קטע קוד פשוט לביצוע ההמרה הזו.
אתה תצטרך
- כּוֹחַ
- ארדואינו
- כבלי USB
- כותרות סיכה
- כבל מגשר
- מקלט רדיו עם פלט PPM.
שלב 1: כותרות סיכות הלחמה ליציאות הקלט/פלט הנוספות של הארדואינו
על מנת להפעיל את המקלט (RX), יש להוסיף כותרות סיכות ל- Arduino. זה גם יהפוך את החיווט בין ה- Bit ל- RX להרבה יותר קל. למידע נוסף, ראה
שלב 2: הוסף את ספריית הג'ויסטיק של Arduino ל- IDE שלך
תוכל למצוא את הספרייה ב- GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… תודה, מתיו היירונימוס, שכתבת אותה.
רק ארדואינים מסוימים יכולים לחקות HID כמו ג'ויסטיק. מכיוון שהמיקרו -בקר של LittleBits הוא ארדואינו לאונרדו בלב, אתה מוכן ללכת.
שלב 3: הברק את הקוד אל הארדואינו
#include #define inputPin 16#להגדיר ערוצים 4 #define lo 800 // להתאים לפלט של RX#להגדיר hi 1600 // להתאים לפלט של RX#להגדיר מסנן 10int ערוץ [ערוצים]; int previousValue [ערוצים]; int counter = 0; ג'ויסטיק_ ג'ויסטיק (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, true, true, false, false, false); התקנת void () {Joystick.setXAxisRange (lo, היי); Joystick.setYAxisRange (הנה, היי); Joystick.setThrottleRange (הנה, היי); Joystick.setRudderRange (הנה, היי); Joystick.begin (); Serial.begin (9600); pinMode (inputPin, INPUT); } לולאת void () {if (pulseIn (inputPin, HIGH)> 3000) {עבור (int i = 0; i <= channel-1; i ++) {channel = pulseIn (inputPin, HIGH); } עבור (int i = 0; i <= channel-1; i ++) {if ((channel > 2000) || (channel <500)) {channel = previousValue ; } אחר {ערוץ = (previousValue +ערוץ )/2; מונה ++; }} Joystick.setXAxis (ערוץ [0]); Joystick.setYAxis (ערוץ [1]); Joystick.setThrottle (ערוץ [2]); Joystick.setRudder (ערוץ [3]); } if (counter> filter) {for (int i = 0; i <= channel-1; i ++) {Serial.print ("ערוץ"); Serial.print (i+1); Serial.print (":"); Serial.println (ערוץ ); previousValue = ערוץ ; } מונה = 0; }}
שים לב שהקוד שמגשר בין אות ה- R/C לבין ה- USB HID המחקה מגיע בצורתו הפשוטה ביותר. הפונקציה המשמשת כאן - pulseIn - היא פונקציה חוסמת. קרא כאן, וכאן, כיצד ליישם גישה שאינה חוסמת באמצעות הפרעות.
שלב 4: בצע את החיווט
חבר כבל מגשר / כבלי DuPont בין ה- Bit ל- RX. המחברים בקצה הכבלים הללו צריכים להיות נקביים. אנו מחברים GND (כחול), VCC (חום) ואות (כתום) מיציאת ה- PPM של ה- RX ל- GND, VCC ו- d16 בארדואינו.
שלב 5: כרוך את המקלט
נתק את הארדואינו מהחשמל. הכנס את רתמת הכריכה למיקום המחבר המסומן BIND ב- RX. הפעל את משדר הרדיו והעבר אותו למצב כריכה. לאחר מכן הפעל כוח על הארדואינו. תהליך הכריכה הצליח כאשר הנורית במקלט נדלקת.
שלב 6: התאם את הקוד לנסיבות שלך
יש לשנות את הקבועים hi and lo בשרטוט Arduino כדי לשקף את הפלט בפועל של המקלט בו אתה משתמש.
#define lo 800
#define היי 1600
האותות בתוך דופק ה- PPM נעים באופן אידיאלי בין 1000μs ל- 2000μs. ה- RX המשמש בתפוקות הניתנות להוראה זה בערך בין 800 ל 1600 והוא שונה במקצת בכל ערוץ. כדי לברר איזה טווח יש למקלט שלך, פתח את הצג הסידורי ב- Arduino IDE כדי לראות את פלט ה- RX שלך. זה ייראה דומה לזה:
ערוץ 1: 728
ערוץ 2: 729 ערוץ 3: 703 ערוץ 4: 726 ערוץ 1: 1681 ערוץ 2: 1639 ערוץ 3: 1613 ערוץ 4: 1676
ברגע שיש לך מושג ברור יותר של הטווח שפלט ה- RX שלך, בחר בקירובים טובים עבור hi and lo ושנה את הקבועים בהתאם. לאחר מכן העלה שוב את המערכון לארדואינו.
שלב 7: כייל את הג'ויסטיק החיקוי
חבר את המכשיר למחשב שלך והשתמש בפונקציית הכיול של מערכת ההפעלה שלך כדי לכייל את הג'ויסטיק החיקוי. כלי טוב עבור לינוקס הוא jstest-gtk.
שיפורים נוספים
- כתוב קוד שאינו חוסם (ראה שלב 3)
- הגדר טווחים לכל ערוץ, לא באופן גלובלי (ראה שלב 6)
לקריאה נוספת
- Redcon CM703
- PPM