Cuprins:
- Pasul 1: anteturi de lipire pe porturile I / O suplimentare ale Arduino
- Pasul 2: Adăugați biblioteca Arduino Joystick la IDE-ul dvs
- Pasul 3: Introduceți codul pe Arduino
- Pasul 4: Faceți cablajul
- Pasul 5: legați receptorul
- Pasul 6: Ajustați codul la circumstanțele dvs
- Pasul 7: Calibrați joystick-ul emulat
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Convertește semnalele PPM de la un receptor radio în poziții joystick
Folosiți-l pentru a vă juca jocurile și simulatoarele de zbor preferate cu emițătorul radio R / C. Acest instructabil folosește un Arduino de la littleBits și un receptor DSMX plus un fragment de cod simplu pentru a face această conversie.
Vei avea nevoie
- Putere
- Arduino
- Cabluri USB
- anteturile pinului
- sârmă jumper
- un receptor radio cu ieșire PPM.
Pasul 1: anteturi de lipire pe porturile I / O suplimentare ale Arduino
Pentru a alimenta receptorul (RX), trebuie adăugate anteturi pin la Arduino. Acest lucru va facilita, de asemenea, cablarea între Bit și RX. Pentru mai multe informații, consultați
Pasul 2: Adăugați biblioteca Arduino Joystick la IDE-ul dvs
Puteți găsi biblioteca pe GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Vă mulțumim, Matthew Heironimus, pentru că ați scris-o.
Numai anumite Arduino pot emula un HID ca un joystick. Deoarece microcontrolerul littleBits este un Arduino Leonardo la inimă, sunteți bine să mergeți.
Pasul 3: Introduceți codul pe Arduino
#include #define inputPin 16 # define channels 4 #define lo 800 // ajustare la ieșirea RX # define hi 1600 // ajustare la ieșirea RX # define filtru 10int canal [canale]; int precedentValoare [canale]; int counter = 0; Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, false, true, true, false, false, false); void setup () {Joystick.setXAxisRange (lo, Salut); Joystick.setYAxisRange (lo, hi); Joystick.setThrottleRange (lo, hi); Joystick.setRudderRange (lo, hi); Joystick.begin (); Serial.begin (9600); pinMode (inputPin, INPUT); } void loop () {if (pulseIn (inputPin, HIGH)> 3000) {for (int i = 0; i <= channels-1; i ++) {channel = pulseIn (inputPin, HIGH); } for (int i = 0; i <= channels-1; i ++) {if ((channel > 2000) || (channel <500)) {channel = previousValue ; } else {canal = (precedentValoare + canal ) / 2; contor ++; }} Joystick.setXAxis (canal [0]); Joystick.setYAxis (canal [1]); Joystick.setThrottle (canal [2]); Joystick.setRudder (canal [3]); } if (contor> filtru) {for (int i = 0; i <= channels-1; i ++) {Serial.print ("channel"); Serial.print (i + 1); Serial.print (":"); Serial.println (canal ); precedentValoare = canal ; } contor = 0; }}
Vă rugăm să rețineți că codul care face legătura între semnalul R / C și USB HID emulat vine în forma sa cea mai simplă. Funcția utilizată aici - pulseIn - este o funcție de blocare. Citiți aici și aici cum să implementați o abordare fără blocare folosind întreruperi.
Pasul 4: Faceți cablajul
Conectați cablurile jumper / cabluri DuPont între Bit și RX. Conectorii de la capătul acestor cabluri trebuie să fie feminini. Conectăm GND (albastru), VCC (maro) și semnal (portocaliu) de la portul PPM al RX la GND, VCC și d16 pe Arduino.
Pasul 5: legați receptorul
Deconectați Arduino de la alimentare. Puneți cablajul de legare în locația conectorului marcată BIND pe RX. Porniți emițătorul radio și comutați-l în modul de legare. Apoi aplicați energie Arduino. Procesul de legare a avut succes când LED-ul din receptor se aprinde.
Pasul 6: Ajustați codul la circumstanțele dvs
Constantele hi și lo din schița Arduino trebuie modificate pentru a reflecta ieșirea reală a receptorului pe care îl utilizați.
#define lo 800
#define hi 1600
Semnalele din interiorul impulsului PPM variază în mod ideal de la 1000μs la 2000μs. RX-ul utilizat în acest manual de ieșire valorează aproximativ între 800 și 1600 și este ușor diferit pe fiecare canal. Pentru a afla ce distanță are receptorul dvs., deschideți monitorul serial în Arduino IDE pentru a vedea ieșirea RX-ului dvs. Va arăta similar cu acesta:
canalul 1: 728
canal 2: 729 canal 3: 703 canal 4: 726 canal 1: 1681 canal 2: 1639 canal 3: 1613 canal 4: 1676
După ce aveți o idee mai clară despre intervalul pe care îl scoate RX, alegeți aproximări bune pentru hi și lo și modificați constantele în consecință. Apoi încărcați din nou schița pe Arduino.
Pasul 7: Calibrați joystick-ul emulat
Conectați dispozitivul la computer și utilizați funcția de calibrare a sistemului dvs. de operare pentru a calibra joystick-ul emulat. Un instrument bun pentru Linux este jstest-gtk.
Îmbunătățiri suplimentare
- Scrieți codul care nu blochează (vezi Pasul 3)
- Setați intervale pe canal, nu la nivel global (consultați Pasul 6)
Lecturi suplimentare
- Redcon CM703
- PPM