Inhoudsopgave:

R / C naar USB-brug - Ajarnpa
R / C naar USB-brug - Ajarnpa

Video: R / C naar USB-brug - Ajarnpa

Video: R / C naar USB-brug - Ajarnpa
Video: Zigbee LAN координатор HamGeek - китайский клон Zigstar c POE и USB C 2024, November
Anonim
R/C naar USB-brug
R/C naar USB-brug

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

Soldeerpenkoppen naar de extra I/O-poorten van de Arduino
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

Voeg de Arduino Joystick-bibliotheek toe aan uw IDE
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

Doe de bedrading
Doe de bedrading
Doe de bedrading
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

Aanbevolen: