Cuprins:

R / C la USB Bridge: 7 pași
R / C la USB Bridge: 7 pași

Video: R / C la USB Bridge: 7 pași

Video: R / C la USB Bridge: 7 pași
Video: Как работает USB? Просто, доступно, с примерами. 2024, Iulie
Anonim
R / C la USB Bridge
R / C la USB Bridge

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

Anteturi Pin de lipit la porturile I / O suplimentare ale Arduino
Anteturi Pin de lipit la 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

Adăugați biblioteca Arduino Joystick la IDE-ul dvs
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

Faceți cablajul
Faceți cablajul
Faceți cablajul
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

Recomandat: