Taula de continguts:
- Pas 1: soldar les capçaleres dels pins als ports d'E / S addicionals d'Arduino
- Pas 2: afegiu la biblioteca del joystick Arduino al vostre IDE
- Pas 3: introduïu el codi a l'arduino
- Pas 4: Feu el cablejat
- Pas 5: enllaceu el receptor
- Pas 6: ajusteu el codi a les vostres circumstàncies
- Pas 7: calibreu el joystick emulat
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
Converteix els senyals PPM d’un receptor de ràdio en posicions del joystick
Utilitzeu-lo per jugar als vostres jocs i simuladors de vol favorits amb el vostre transmissor de ràdio R / C. Aquest Instructable utilitza un Arduino de littleBits i un receptor DSMX més un simple fragment de codi per fer aquesta conversió.
Necessitarà
- Potència
- Arduino
- Cables USB
- capçaleres de pins
- cable de pont
- un receptor de ràdio amb sortida PPM.
Pas 1: soldar les capçaleres dels pins als ports d'E / S addicionals d'Arduino
Per alimentar el receptor (RX), cal afegir capçaleres de pin a l'Arduino. Això també facilitarà molt el cablejat entre el Bit i el RX. Consulteu https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit per obtenir més informació.
Pas 2: afegiu la biblioteca del joystick Arduino al vostre IDE
Podeu trobar la biblioteca a GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Gràcies, Matthew Heironimus, per escriure-la.
Només certs Arduinos poden emular un HID com un joystick. Com que el microcontrolador littleBits és un Arduino Leonardo de fons, és bo anar-hi.
Pas 3: introduïu el codi a l'arduino
#include #define inputPin 16 # define channels 4 #define lo 800 // ajustar a la sortida de RX # define hi 1600 // ajustar a la sortida de RX # definir filtre 10int canal [canals]; intValor anterior [canals]; 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 (he, hola); Joystick.setYAxisRange (he, hi); Joystick.setThrottleRange (he, hi); Joystick.setRudderRange (he, 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 = (anteriorValor + canal ) / 2; comptador ++; }} Joystick.setXAxis (canal [0]); Joystick.setYAxis (canal [1]); Joystick.setThrottle (canal [2]); Joystick.setRudder (canal [3]); } if (comptador> filtre) {for (int i = 0; i <= channels-1; i ++) {Serial.print ("channel"); Serial.print (i + 1); Serial.print (":"); Serial.println (canal ); anteriorValor = canal ; } comptador = 0; }}
Tingueu en compte que el codi que connecta entre el senyal R / C i l’HID USB emulat es presenta en la seva forma més senzilla. La funció que s'utilitza aquí - pulseIn - és una funció de bloqueig. Llegiu aquí i aquí com implementar un enfocament que no bloqueja mitjançant interrupcions.
Pas 4: Feu el cablejat
Connecteu els cables jumper / DuPont entre el Bit i el RX. Els connectors al final d’aquests cables han de ser femelles. Connectem GND (blau), VCC (marró) i senyal (taronja) des del port PPM del RX a GND, VCC i d16 a l’Arduino.
Pas 5: enllaceu el receptor
Desconnecteu l'Arduino de l'alimentació. Col·loqueu l’arnès d’enquadernació a la ubicació del connector marcada BIND al RX. Enceneu el transmissor de ràdio i canvieu-lo al mode de vinculació. A continuació, apliqueu energia a l'Arduino. El procés de vinculació va tenir èxit quan s’encén el LED del receptor.
Pas 6: ajusteu el codi a les vostres circumstàncies
Les constants hi i lo de l'esbós d'Arduino s'han de modificar per reflectir la sortida real del receptor que utilitzeu.
#define lo 800
#define hi 1600
Els senyals a l’interior del pols PPM van idealment de 1000μs a 2000μs. El RX utilitzat en aquesta sortida instructable valors aproximadament entre 800 i 1600 i és lleugerament diferent a cada canal. Per esbrinar quin rang té el vostre receptor, obriu el monitor de sèrie a l'IDE Arduino per veure la sortida del vostre RX. Serà similar a això:
canal 1: 728
canal 2: 729 canal 3: 703 canal 4: 726 canal 1: 1681 canal 2: 1639 canal 3: 1613 canal 4: 1676
Un cop tingueu una idea més clara del rang que emet el vostre RX, trieu bones aproximacions per hi i lo i modifiqueu les constants en conseqüència. Després torneu a penjar l'esbós a l'Arduino.
Pas 7: calibreu el joystick emulat
Connecteu el dispositiu a l’ordinador i utilitzeu la funció de calibratge del sistema operatiu per calibrar el joystick emulat. Una bona eina per a Linux és jstest-gtk.
Més millores
- Escriviu codi que no bloquegi (vegeu el pas 3)
- Definiu intervals per canal, no de manera global (vegeu el pas 6)
Per llegir més
- Redcon CM703
- PPM