Innehållsförteckning:

R/C till USB -brygga: 7 steg
R/C till USB -brygga: 7 steg

Video: R/C till USB -brygga: 7 steg

Video: R/C till USB -brygga: 7 steg
Video: Störig granne 2024, Juli
Anonim
R/C till USB -brygga
R/C till USB -brygga

Konverterar PPM -signaler från en radiomottagare till joysticklägen

Använd den för att spela dina favoritspel och flygsimulatorer med din R/C -radiosändare. Denna instruktör använder en Arduino från littleBits och en DSMX -mottagare plus ett enkelt kodavsnitt för att göra denna konvertering.

Du kommer behöva

  • Kraft
  • Arduino
  • USB -kablar
  • stifthuvuden
  • bygelkabel
  • en radiomottagare med PPM -utgång.

Steg 1: Lödpinnhuvuden till Arduinos extra I/O -portar

Lödstift till Arduinos extra I/O -portar
Lödstift till Arduinos extra I/O -portar

För att driva mottagaren (RX) måste stifthuvuden läggas till i Arduino. Detta kommer också att göra kablarna mellan bit och RX mycket enklare. Se https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit för mer information.

Steg 2: Lägg till Arduino Joystick -biblioteket i din IDE

Lägg till Arduino Joystick -biblioteket i din IDE
Lägg till Arduino Joystick -biblioteket i din IDE

Du hittar biblioteket på GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Tack, Matthew Heironimus, för att du skrev det.

Endast vissa Arduinos kan efterlikna ett HID som en joystick. Eftersom littleBits -mikrokontrollern är en Arduino Leonardo i hjärtat är du bra att gå.

Steg 3: Flasha koden till Arduino

#include #define inputPin 16#definiera kanaler 4 #define lo 800 // justera till utmatning av RX#definiera hi 1600 // justera till utmatning av RX#definiera filter 10int kanal [kanaler]; int föregående värde [kanaler]; int counter = 0; Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, true, true, false, false, false); void setup () {Joystick.setXAxisRange (lo, Hej); Joystick.setYAxisRange (lo, hej); Joystick.setThrottleRange (lo, hej); Joystick.setRudderRange (lo, hej); Joystick.begin (); Serial.begin (9600); pinMode (inputPin, INPUT); } void loop () {if (pulseIn (inputPin, HIGH)> 3000) {for (int i = 0; i <= channel-1; i ++) {channel = pulseIn (inputPin, HIGH); } för (int i = 0; i <= kanaler-1; i ++) {if ((kanal > 2000) || (kanal <500)) {kanal = föregående värde ; } annars {kanal = (föregående värde +kanal )/2; räknare ++; }} Joystick.setXAxis (kanal [0]); Joystick.setYAxis (kanal [1]); Joystick.setThrottle (kanal [2]); Joystick.setRudder (kanal [3]); } if (counter> filter) {för (int i = 0; i <= channel-1; i ++) {Serial.print ("channel"); Serial.print (i+1); Serial.print (":"); Serial.println (kanal ); föregående värde = kanal ; } räknare = 0; }}

Tänk på att koden som överbryggar mellan R/C -signalen och den emulerade USB HID kommer i sin enklaste form. Funktionen som används här - pulseIn - är en blockerande funktion. Läs här och här hur du implementerar ett icke-blockerande tillvägagångssätt med avbrott.

Steg 4: Gör ledningen

Gör ledningarna
Gör ledningarna
Gör ledningarna
Gör ledningarna

Anslut bygelkabel / DuPont -kablar mellan bit och RX. Anslutningarna i slutet av dessa kablar måste vara hona. Vi ansluter GND (blå), VCC (brun) och signal (orange) från PPM -porten på RX till GND, VCC och d16 på Arduino.

Steg 5: Bind mottagaren

Koppla från Arduino från strömmen. Sätt bindningsselen i kontaktplatsen märkt BIND på RX. Slå på din radiosändare och sätt den i bindningsläge. Applicera sedan ström på Arduino. Bindningsprocessen lyckades när lysdioden i mottagaren tänds.

Steg 6: Justera koden efter dina omständigheter

Konstanterna hi and lo i Arduino -skissen måste ändras för att återspegla den faktiska utsignalen från mottagaren du använder.

#define lo 800

#define hi 1600

Signalerna inuti PPM -pulsen sträcker sig idealiskt från 1000μs till 2000μs. RX som används i denna instruerbara utdata värderar ungefär mellan 800 och 1600 och är något annorlunda på varje kanal. För att ta reda på vilket intervall din mottagare har, öppna seriemonitorn i Arduino IDE för att se utmatningen från din RX. Det kommer att se ut så här:

kanal 1: 728

kanal 2: 729 kanal 3: 703 kanal 4: 726 kanal 1: 1681 kanal 2: 1639 kanal 3: 1613 kanal 4: 1676

När du har en tydligare uppfattning om det intervall som din RX -utmatning ger, välj bra approximationer för hej och lo och ändra konstanterna därefter. Ladda sedan upp skissen till Arduino igen.

Steg 7: Kalibrera den emulerade joysticken

Anslut enheten till din dator och använd kalibreringsfunktionen i ditt operativsystem för att kalibrera den emulerade joysticken. Ett bra verktyg för Linux är jstest-gtk.

Ytterligare förbättringar

  • Skriv icke-blockerande kod (se steg 3)
  • Ange intervall per kanal, inte globalt (se steg 6)

Vidare läsning

  • Redcon CM703
  • PPM

Rekommenderad: