Inhoudsopgave:
- Stap 1: Soldeerpenkoppen naar de extra I/O-poorten van de Arduino
- Stap 2: Voeg de Arduino Joystick-bibliotheek toe aan uw IDE
- Stap 3: Flash de code op de Arduino
- Stap 4: Doe de bedrading
- Stap 5: Bind de ontvanger
- Stap 6: Pas de code aan uw omstandigheden aan
- Stap 7: De geëmuleerde joystick kalibreren
Video: R / C naar USB-brug - Ajarnpa
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Zet PPM-signalen van een radio-ontvanger om in joystickposities
Gebruik het om je favoriete games en vluchtsimulators te spelen met je R/C-radiozender. Deze Instructable gebruikt een Arduino van littleBits en een DSMX-ontvanger plus een eenvoudig codefragment om deze conversie te maken.
Je zal nodig hebben
- Stroom
- Arduino
- USB-kabels
- pin-headers
- doorverbindingsdraad
- een radio-ontvanger met PPM-uitgang.
Stap 1: Soldeerpenkoppen naar de extra I/O-poorten van de Arduino
Om de ontvanger (RX) van stroom te voorzien, moeten pin-headers aan de Arduino worden toegevoegd. Dit maakt ook de bedrading tussen de Bit en de RX een stuk eenvoudiger. Zie https://discuss.littlebits.cc/t/using-the-additional-i-os-on-the-arduino-bit voor meer informatie.
Stap 2: Voeg de Arduino Joystick-bibliotheek toe aan uw IDE
Je kunt de bibliotheek vinden op GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Bedankt, Matthew Heironimus, voor het schrijven ervan.
Alleen bepaalde Arduino's kunnen een HID emuleren zoals een joystick. Aangezien de littleBits-microcontroller een Arduino Leonardo in hart en nieren is, bent u klaar om te gaan.
Stap 3: Flash de code op de Arduino
#include #define inputPin 16#define kanalen 4 #define lo 800 //aanpassen aan output van RX#define hi 1600 //aanpassen aan output van RX#definiëren filter 10int kanaal [kanalen]; int vorigeWaarde[kanalen]; int counter = 0; Joystick_ Joystick (JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, waar, waar, onwaar, onwaar, onwaar, onwaar, waar, waar, onwaar, onwaar, onwaar); void setup () { Joystick.setXAxisRange (lo, Hoi); Joystick.setYAxisRange(lo, hallo); Joystick.setThrottleRange(lo, hallo); Joystick.setRudderRange(lo, hallo); Joystick.begin(); Serieel.begin(9600); pinMode (invoerPin, 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 { kanaal = (vorigeWaarde+kanaal)/2; teller++; } } Joystick.setXAxis(kanaal[0]); Joystick.setYAxis(kanaal [1]); Joystick.setThrottle(kanaal [2]); Joystick.setRudder(kanaal[3]); } if(teller > filter) { for(int i = 0; i <= channels-1; i++) { Serial.print("channel"); Serial.print(i+1); Serieel.print(": "); Serial.println(kanaal); previousValue=kanaal; } teller=0; } }
Houd er rekening mee dat de code die een brug vormt tussen het R/C-signaal en de geëmuleerde USB HID in zijn eenvoudigste vorm is. De hier gebruikte functie – pulseIn – is een blokkeerfunctie. Lees hier en hier hoe u een niet-blokkerende aanpak implementeert met behulp van interrupts.
Stap 4: Doe de bedrading
Sluit jumper wire / DuPont kabels aan tussen de Bit en de RX. De connectoren aan het einde van deze kabels moeten vrouwelijk zijn. We verbinden GND (blauw), VCC (bruin) en signaal (oranje) van de PPM-poort van de RX met GND, VCC en d16 op de Arduino.
Stap 5: Bind de ontvanger
Koppel de Arduino los van de stroom. Plaats de bindende kabelboom in de connectorlocatie die is gemarkeerd met BIND op de RX. Schakel uw radiozender in en schakel deze in de bindmodus. Zet vervolgens stroom op de Arduino. Het bindproces is succesvol verlopen wanneer de LED in de ontvanger gaat branden.
Stap 6: Pas de code aan uw omstandigheden aan
De constanten hi en lo in de Arduino-schets moeten worden gewijzigd om de werkelijke uitvoer van de ontvanger die u gebruikt weer te geven.
#definieer lo 800
#define hallo 1600
De signalen binnen de PPM-puls variëren idealiter van 1000μs tot 2000μs. De RX die in deze Instructable wordt gebruikt, heeft waarden tussen de 800 en 1600 en is op elk kanaal iets anders. Om erachter te komen welk bereik uw ontvanger heeft, opent u de seriële monitor in de Arduino IDE om de uitvoer van uw RX te zien. Het zal er ongeveer zo uitzien:
kanaal 1: 728
kanaal 2: 729 kanaal 3: 703 kanaal 4: 726 kanaal 1: 1681 kanaal 2: 1639 kanaal 3: 1613 kanaal 4: 1676
Zodra u een duidelijker idee heeft van het bereik dat uw RX uitvoert, kiest u goede benaderingen voor hi en lo en past u de constanten dienovereenkomstig aan. Upload vervolgens de schets opnieuw naar de Arduino.
Stap 7: De geëmuleerde joystick kalibreren
Sluit het apparaat aan op uw computer en gebruik de kalibratiefunctie van uw besturingssysteem om de geëmuleerde joystick te kalibreren. Een goede tool voor Linux is jstest-gtk.
Verdere verbeteringen
- Schrijf niet-blokkerende code (zie stap 3)
- Bereiken per kanaal instellen, niet globaal (zie stap 6)
Verder lezen
- Redcon CM703
- PPM