Inhaltsverzeichnis:
- Schritt 1: Lötstiftleisten an die zusätzlichen I/O-Anschlüsse des Arduino
- Schritt 2: Fügen Sie die Arduino Joystick-Bibliothek zu Ihrer IDE hinzu
- Schritt 3: Flashen Sie den Code auf den Arduino
- Schritt 4: Führen Sie die Verkabelung durch
- Schritt 5: Binden Sie den Empfänger
- Schritt 6: Passen Sie den Code an Ihre Umstände an
- Schritt 7: Kalibrieren Sie den emulierten Joystick
Video: R/C-zu-USB-Brücke - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Wandelt PPM-Signale von einem Funkempfänger in Joystick-Positionen um
Verwenden Sie es, um Ihre Lieblingsspiele und Flugsimulatoren mit Ihrem RC-Funksender zu spielen. Dieses Instructable verwendet ein Arduino von littleBits und einen DSMX-Empfänger sowie ein einfaches Code-Snippet, um diese Konvertierung durchzuführen.
Du wirst brauchen
- Leistung
- Arduino
- USB-Kabel
- Stiftleisten
- Überbrückungskabel
- ein Funkempfänger mit PPM-Ausgang.
Schritt 1: Lötstiftleisten an die zusätzlichen I/O-Anschlüsse des Arduino
Um den Empfänger (RX) mit Strom zu versorgen, müssen dem Arduino Stiftleisten hinzugefügt werden. Dadurch wird auch die Verkabelung zwischen dem Bit und dem RX viel einfacher. Weitere Informationen finden Sie unter
Schritt 2: Fügen Sie die Arduino Joystick-Bibliothek zu Ihrer IDE hinzu
Sie finden die Bibliothek auf GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Vielen Dank, Matthew Heironimus, für das Schreiben.
Nur bestimmte Arduinos können ein HID wie einen Joystick emulieren. Da der littleBits-Mikrocontroller im Herzen ein Arduino Leonardo ist, können Sie loslegen.
Schritt 3: Flashen Sie den Code auf den Arduino
#include #define inputPin 16#define Kanäle 4 #define lo 800 //An die Ausgabe von RX anpassen#define hi 1600 //Anpassen an die Ausgabe von RX#Define Filter 10int channel[channels]; int previousValue[Kanäle]; 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, Hi); Joystick.setYAxisRange(lo, hallo); Joystick.setThrottleRange(lo, hallo); Joystick.setRudderRange (lo, hallo); 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); } for(int i = 0; i <=channels-1; i++) { if((channel > 2000) || (channel <500)) {channel = previousValue; aufrechtzuerhalten. Sonst {Kanal = (vorherigerWert+Kanal)/2; Zähler++; } } Joystick.setXAxis(channel[0]); Joystick.setYAxis (Kanal[1]); Joystick.setThrottle (Kanal [2]); Joystick.setRudder(Kanal[3]); aufrechtzuerhalten. Wenn (Zähler > Filter) { for (int i = 0; i <= Kanäle-1; i ++) { Serial.print ("Kanal"); Serial.print (i+1); Serial.print (: "); Serial.println (Kanal); vorherigerWert=Kanal; } Zähler=0; } }
Bitte beachten Sie, dass der Code, der zwischen dem R/C-Signal und dem emulierten USB-HID überbrückt, in seiner einfachsten Form vorliegt. Die hier verwendete Funktion – pulseIn – ist eine Sperrfunktion. Lesen Sie hier und hier, wie Sie einen nicht-blockierenden Ansatz mit Interrupts implementieren.
Schritt 4: Führen Sie die Verkabelung durch
Verbinden Sie das Überbrückungskabel / DuPont-Kabel zwischen dem Bit und dem RX. Die Stecker am Ende dieser Kabel müssen weiblich sein. Wir verbinden GND (blau), VCC (braun) und Signal (orange) vom PPM-Port des RX mit GND, VCC und d16 auf dem Arduino.
Schritt 5: Binden Sie den Empfänger
Trennen Sie den Arduino vom Strom. Stecken Sie den Bindungskabelbaum in die mit BIND gekennzeichnete Steckerposition am RX. Schalten Sie Ihren Funksender ein und schalten Sie ihn in den Bindemodus. Als nächstes legen Sie Strom an den Arduino an. Der Bindevorgang war erfolgreich, wenn die LED im Empfänger aufleuchtet.
Schritt 6: Passen Sie den Code an Ihre Umstände an
Die Konstanten hi und lo in der Arduino-Skizze müssen geändert werden, um die tatsächliche Ausgabe des von Ihnen verwendeten Empfängers widerzuspiegeln.
#define lo 800
#define hallo 1600
Die Signale innerhalb des PPM-Pulses reichen idealerweise von 1000μs bis 2000μs. Der in diesem Instructable verwendete RX gibt Werte ungefähr zwischen 800 und 1600 aus und ist auf jedem Kanal leicht unterschiedlich. Um herauszufinden, welche Reichweite Ihr Empfänger hat, öffnen Sie den Serial Monitor in der Arduino IDE, um die Ausgabe Ihres RX zu sehen. Es wird ähnlich aussehen:
Kanal 1: 728
Kanal 2: 729 Kanal 3: 703 Kanal 4: 726 Kanal 1: 1681 Kanal 2: 1639 Kanal 3: 1613 Kanal 4: 1676
Sobald Sie eine klarere Vorstellung von dem Bereich haben, den Ihr RX ausgibt, wählen Sie gute Näherungen für hi und lo und ändern Sie die Konstanten entsprechend. Laden Sie dann die Skizze erneut auf den Arduino hoch.
Schritt 7: Kalibrieren Sie den emulierten Joystick
Schließen Sie das Gerät an Ihren Computer an und verwenden Sie die Kalibrierungsfunktion Ihres Betriebssystems, um den emulierten Joystick zu kalibrieren. Ein gutes Werkzeug für Linux ist jstest-gtk.
Weitere Verbesserungen
- Schreiben Sie nicht blockierenden Code (siehe Schritt 3)
- Bereiche pro Kanal festlegen, nicht global (siehe Schritt 6)
Weiterlesen
- Redcon CM703
- PPM