Spisu treści:

Mostek R/C na USB: 7 kroków
Mostek R/C na USB: 7 kroków

Wideo: Mostek R/C na USB: 7 kroków

Wideo: Mostek R/C na USB: 7 kroków
Wideo: Mostek H - lutowanie i próba 2024, Listopad
Anonim
Mostek R/C na USB
Mostek R/C na USB

Konwertuje sygnały PPM z odbiornika radiowego na pozycje joysticka

Użyj go, aby grać w swoje ulubione gry i symulatory lotu za pomocą nadajnika radiowego R/C. Ten Instructable używa Arduino firmy littleBits i odbiornika DSMX oraz prostego fragmentu kodu, aby dokonać tej konwersji.

Będziesz potrzebować

  • Moc
  • Arduino
  • Kable USB
  • nagłówki pinów
  • przewód połączeniowy
  • odbiornik radiowy z wyjściem PPM.

Krok 1: Przylutuj nagłówki pinów do dodatkowych portów we/wy Arduino

Przylutuj nagłówki pinów do dodatkowych portów we/wy Arduino
Przylutuj nagłówki pinów do dodatkowych portów we/wy Arduino

Aby zasilić odbiornik (RX), należy dodać do Arduino listwy pinowe. Ułatwi to również okablowanie między Bitem a RX. Aby uzyskać więcej informacji, zobacz

Krok 2: Dodaj bibliotekę Arduino Joystick do swojego IDE

Dodaj bibliotekę Arduino Joystick do swojego IDE
Dodaj bibliotekę Arduino Joystick do swojego IDE

Bibliotekę można znaleźć na GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Dziękuję, Matthew Heironimus, za napisanie jej.

Tylko niektóre Arduino mogą emulować HID jak joystick. Ponieważ mikrokontroler littleBits jest Arduino Leonardo w sercu, jesteś gotowy do pracy.

Krok 3: Flashuj kod na Arduino

#include #define inputPin 16#definiuj kanały 4 #define lo 800 //dostosuj do wyjścia RX#define hi 1600 //dostosuj do wyjścia RX#define filter 10int channel[channels]; int poprzedniaWartość[kanały]; int counter = 0;Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, true, true, true, false, false;void setup(){ Joystick.setXAxisRange(lo, Cześć); Joystick.setYAxisRange(lo, hi); Joystick.setThrottleRange(lo, hi); Joystick.setRudderRange(lo, hi); Joystick.początek(); Serial.początek(9600); pinMode(inputPin, INPUT); }void loop(){ if(pulseIn(inputPin, HIGH) > 3000) { for(int i = 0; i <= kanały-1; i++) { kanał=pulseIn(inputPin, HIGH); } for(int i = 0; i <= kanały-1; i++) { if((kanał > 2000) || (kanał <500)) { kanał = poprzedniaWartość; } else { kanał = (poprzedniaWartość+kanał)/2; licznik++; } } Joystick.setXAxis(kanał[0]); Joystick.setYAxis(kanał[1]); Joystick.setThrottle(kanał[2]); Joystick.setRudder(kanał[3]); } if(licznik > filtr) { for(int i = 0; i <= kanały-1; i++) { Serial.print("kanał"); druk.seryjny(i+1); Serial.print(": "); Serial.println(kanał); poprzedniaWartość=kanał; } licznik=0; } }

Należy pamiętać, że kod, który łączy sygnał R/C z emulowanym USB HID, ma najprostszą formę. Użyta tutaj funkcja – pulseIn – jest funkcją blokującą. Przeczytaj tutaj i tutaj, jak zaimplementować podejście nieblokujące przy użyciu przerwań.

Krok 4: Wykonaj okablowanie

Wykonaj okablowanie
Wykonaj okablowanie
Wykonaj okablowanie
Wykonaj okablowanie

Podłącz przewód połączeniowy / kable DuPont między Bit i RX. Złącza na końcach tych kabli muszą być żeńskie. Podłączamy GND (niebieski), VCC (brązowy) i sygnał (pomarańczowy) z portu PPM RX do GND, VCC i d16 na Arduino.

Krok 5: Powiąż odbiornik

Odłącz Arduino od zasilania. Umieść wiązkę wiązania w miejscu złącza oznaczonym BIND na RX. Włącz nadajnik radiowy i przełącz go w tryb wiązania. Następnie podłącz zasilanie do Arduino. Proces wiązania zakończył się pomyślnie, gdy zaświeciła się dioda LED w odbiorniku.

Krok 6: Dostosuj kod do swoich okoliczności

Stałe hi i lo w szkicu Arduino należy zmienić, aby odzwierciedlić rzeczywistą moc odbiornika, którego używasz.

#zdefiniuj lo 800

#definiuj cześć 1600

Sygnały wewnątrz impulsu PPM idealnie mieszczą się w zakresie od 1000 μs do 2000 μs. RX używane w tym instruktażowym wyjściu ma wartości z grubsza od 800 do 1600 i jest nieco inne na każdym kanale. Aby dowiedzieć się, jaki zasięg ma twój odbiornik, otwórz Monitor szeregowy w Arduino IDE, aby zobaczyć wyjście swojego RX. Będzie wyglądać podobnie do tego:

kanał 1: 728

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

Kiedy już masz jaśniejsze pojęcie o zakresie, jaki wyprowadza twój RX, wybierz dobre przybliżenia dla hi i lo i odpowiednio zmień stałe. Następnie ponownie prześlij szkic do Arduino.

Krok 7: Skalibruj emulowany joystick

Podłącz urządzenie do komputera i użyj funkcji kalibracji systemu operacyjnego, aby skalibrować emulowany joystick. Dobrym narzędziem dla Linuksa jest jstest-gtk.

Dalsze ulepszenia

  • Napisz kod nieblokujący (patrz Krok 3)
  • Ustaw zakresy na kanał, a nie globalnie (patrz krok 6)

Dalsza lektura

  • Redcon CM703
  • PPM

Zalecana: