Obsah:
- Zásoby
- Krok 1: Zapojte RX a Arduino
- Krok 2: Získanie niektorých signálov PPM
- Krok 3: Konfigurácia vysielača
- Krok 4: Spustenie joysticku
- Krok 5: Kódovanie Arduina
Video: Prevodník joysticku PPM na USB na báze Arduino (JETI) pre FSX: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Rozhodol som sa prepnúť svoj vysielač JETI DC-16 z režimu 2 na režim 1, ktorý v zásade prepína plyn a výťah zľava doprava a naopak. Keďže som kvôli nejakému zmätku vľavo/vpravo v mozgu nechcel zrútiť jeden zo svojich modelov, premýšľal som, či je možné v FSX trochu cvičiť.
Čítal som a testoval som, či vysielače JETI skutočne podporujú režim joysticku ihneď po vybalení, ale chcel som plnú flexibilitu priradenia osí a prepínačov a používať TX ako u skutočného modelu. Použitím výstupu prijímača je tiež možné využiť spracovanie signálu v DC-16 a použiť mixéry, letové fázy, duálne sadzby, čokoľvek, čo tam môžete naprogramovať.
Nedávno som našiel pekný návod, ako vyrobiť vstupné zariadenie USB HID, konkrétne joystick, z lacného Arduina ako Pro Micro:
www.instructables.com/id/Create-a-Joystick…
To by umožnilo všetko potrebné na ovládanie lietadla / helikoptéry / čohokoľvek vo FSX! K dispozícii je veľa osí a tlačidiel.
Pretože som mal práve náhradný JETI RSAT2, rozhodol som sa ho prepojiť s Arduinom a skúsiť implementovať malý PPM parser spolu s knižnicou Joystick.
Predpokladám, že niekto, kto dodržiava tieto kroky, je oboznámený s pripojením a programovaním Arduina. Neposkytujem žiadne záruky za poruchy alebo škody!
Zásoby
Budete potrebovať…
- akékoľvek Arduino podporované knižnicou Joystick, použil som Sparkfun Pro Micro 5V / 16 MHz
- najnovšia verzia Arduino IDE
- akýkoľvek RC prijímač s výstupom signálu PPM, napríklad JETI RSAT2
- niekoľko prepojovacích káblov (min. 3)
- knižnica Joystick nainštalovaná v Arduino IDE
- knižnica arduino-timer:
Krok 1: Zapojte RX a Arduino
Zapojenie je veľmi jednoduché. Rozhodol som sa napájať Arduino iba z USB, pretože bude emulovať zariadenie Joystick. To dodá Arduinu 5 V, ktoré je možné použiť aj na napájanie RC prijímača.
Použil som Pin VCC, ktorý poskytuje regulovaný výstup, a najbližší pin Gnd - stačí ho pripojiť ku konektorom + a - pinov PPM. Keď sa Arduino začne napájať, prijímač sa teraz tiež zapne.
Pre signál PPM som sa rozhodol použiť prerušenia na ich analýzu. Prerušenia sú k dispozícii napr. na Pin 3, tak ho tam len pripojte - na arduine nie je „natívny RC pin“, ale možno viac a rôznych spôsobov čítania signálu prijímača.
Musel som vypnúť napäťový alarm RX, pretože napätie VCC s napájaním USB bude iba okolo 4,5 V - ale celkom stabilné, takže nie je žiadny problém.
Krok 2: Získanie niektorých signálov PPM
Keď je prijímač A TX napájaný, dostával som signály PPM, ako je znázornené na obrázku. 16 kanálov, navždy sa opakujúcich. Ak je Failsafe na RSAT vypnuté a vysielač je vypnutý, výstup PPM bude deaktivovaný.
Viac informácií o PPM nájdete tu:
- https://en.wikipedia.org/wiki/Pulse-position_modul…
- https://wiki.rc-network.de/index.php/PPM
Pretože v tomto prípade nelietam na skutočných veciach, nestaral som sa o teoretické načasovanie a iba som na osciloskope zistil, čo môj prijímač akútne vydáva pri pohybe páčok úplne zľava doprava (štandardné nastavenia v TX). Zdalo sa, že -100% zodpovedá impulzom s dĺžkou 600 µs a +100% až 1 600 µs. Tiež som sa nestaral o dĺžku pauzových impulzov (400 µs) v mojom kóde Arduino, ale predpokladal som, že rozstup rámcov je min. 3000 µs.
Krok 3: Konfigurácia vysielača
Pretože je potrebné poznať iba skutočnú polohu riadiacich plôch, stačí jeden kanál / „servo“na RC funkciu. V dôsledku toho je možné vykonať pomerne jednoduché nastavenie vysielača - podobné bežnému modelu RC. Hlavné funkcie krídelok, výškovky, kormidla a škrtiacej klapky vyžadujú iba jeden servopohon, respektíve kanál vysielača. Tiež som pridal klapky, brzdy a prevodový stupeň, takže zatiaľ bolo ponechaných 9 kanálov. Upozorňujeme, že klapky boli nasadené vo fáze letu a nie sú ovládané priamo páčkou, posúvačom alebo tlačidlom.
Krok 4: Spustenie joysticku
Knižnica Joystick sa veľmi ľahko používa a poskytuje niekoľko príkladov a testov. Malo by byť užitočné najskôr skontrolovať, či je Arduino rozpoznaný ako správny joystick, pokyny uvedené v vstupnej sekcii a samotná knižnica poskytujú dobré rady.
Na ovládacom paneli Zariadenia a tlačiarne sa Arduino zobrazovalo ako „Sparkfun Pro Micro“a testovacie okno joysticku ukazovalo 7 osí a množstvo podporovaných tlačidiel. Pri programovaní v Arduine je možné použiť aj klobúkový spínač.
Krok 5: Kódovanie Arduina
Čo ešte chýba, je skutočná analýza signálu PPM a priradenie osiam a tlačidlám joysticku. Rozhodol som sa pre nasledujúce mapovanie:
Priradenie kanála / funkcie / joysticku:
- Plyn -> Os škrtiacej klapky
- Krídla -> os X
- Výťah -> os Y
- Kormidlo -> os rotácie X
- Klapky -> os rotácie Y
- Brzda -> os Z
- Zariadenie -> Tlačidlo 0
Keď je prevodový stupeň zaradený, musí byť stlačené prvé tlačidlo joysticku, ktoré sa uvoľní pri zaradení vyššieho stupňa. To však bude vyžadovať FSUIPC pre FSX, po vybalení z krabice FSX akceptuje iba tlačidlo na prepínanie prevodových stupňov, čo sa práve pri mojich modeloch nedeje.
K svojej aktuálnej verzii kódu som poskytol množstvo komentárov, ktoré mi celkom vyhovujú - môžete zmeniť svoje priradenie alebo pridať nové funkcie. Posledných 9 RC kanálov sa v súčasnosti nepoužíva.
Na nastavenie je potrebné inicializovať triedu Joystick, v zásade definovaním rozsahov číselných osí:
/ * Nastaviť rozsah osí (definovaný v hlavičke, 0 - 1 000) */
Joystick.setXAxisRange (CHANNEL_MIN, CHANNEL_MAX); Joystick.setYAxisRange (CHANNEL_MIN, CHANNEL_MAX); …
Použitím hodnôt od 0 do 1 000 je možné priamo mapovať dĺžku impulzu (600 - 1 600 µs) na hodnoty joysticku bez zmeny mierky.
DIN 3 je inicializovaná ako digitálny vstup, povolené vyťahovania a je pripojené prerušenie:
pinMode (PPM_PIN, INPUT_PULLUP);
attachInterrupt (digitalPinToInterrupt (PPM_PIN), PPM_Pin_Changed, CHANGE);
Na účely ladenia som v pravidelných intervaloch pomocou knižnice arduino-timer pridal niekoľko výtlačkov cez sériové rozhranie:
ak (SERIAL_PRINT_INTERVAL> 0) {
scheduler.every (SERIAL_PRINT_INTERVAL, (void*) -> bool {SerialPrintChannels (); return true;}); }
Prerušenie pinu sa vyvolá vždy, keď sa zmení logická hodnota pinu, teda pre každú hranu v signáli PPM. Vyhodnoťte dĺžku impulzu jednoduchým načasovaním pomocou mikro ():
uint32_t curTime = micros ();
uint32_t pulseLength = curTime - edgeTime; uint8_t curState = digitalRead (PPM_PIN);
Nové impulzy je možné klasifikovať vyhodnotením aktuálneho stavu kolíka a jeho kombináciou s dĺžkou impulzu a minulými impulzmi. Nasledujúce podmienené zistí medzeru medzi rámcami:
if (lastState == 0 && pulseLength> 3000 && pulseLength <6000)
Pri nasledujúcich impulzoch bude dĺžka impulzu mapovaná do stavu osi orezaním a posunutím dĺžky impulzu tak, aby zodpovedala rozsahu osí joysticku:
uint16_t rxLength = pulseLength;
rxLength = (rxLength> 1600)? 1600: rxLength; rxLength = (rxLength <600)? 600: rxDĺžka; rxKanály [curChannel] = rxDĺžka - 600;
Pole rxChannels nakoniec obsahuje 16 hodnôt od 0 do 1 000, ktoré označujú polohy páčok / posúvačov a tlačidiel.
Po prijatí 16 kanálov sa vykoná mapovanie na joystick:
/ * osi */
Joystick.setThrottle (kanály [0]); Joystick.setXAxis (kanály [1]); Joystick.setYAxis (1 000 kanálov [2]); Joystick.setRxAxis (kanály [3]); Joystick.setRyAxis (kanály [4]); Joystick.setZAxis (1 000 kanálov [5]); / * tlačidlá */ Joystick.setButton (0, (kanály [6] <500? 1: 0)); / * aktualizácia údajov cez USB */ Joystick.sendState ();
V kóde som obrátil niektoré osi, čo nie je absolútne nevyhnutné, pretože os je možné prevrátiť aj otočením smeru serva alebo priradením v FSX. Rozhodol som sa však ponechať smery servo a tiež pôvodné priradenie FSX.
Toto tlačidlo sa zapína alebo vypína prahovým kanálom 7.
A nezabudnite zaškrtnúť plánovač … v opačnom prípade nebudú viditeľné žiadne výtlačky ladenia.
prázdna slučka () {
scheduler.tick (); }
Na obrázku, ktorý som pripojil, vidíte, že kanál 1 bol presunutý z 1 000 (plný plyn) na 0 (nečinný).
FSX bude detekovať Arduino rovnako ako každý iný joystick, stačí teda priradiť tlačidlo a osi a zabaviť sa pri štartovaní!
To, čo sa mi na tomto prístupe skutočne páči, je, že svoj vysielač môžete používať iba ako u skutočného modelu, napr. pomocou fáz letu atď.
Odporúča:
Jednoduchý logický prevodník DIY pre zariadenia 3,3 V: 4 kroky
Jednoduchý logický prevodník DIY pre zariadenia 3,3 V: V tomto príspevku vám ukážem, ako si môžete vytvoriť vlastný logický prevodník 5 V na 3,3 V na pripojenie snímačov 5 V k novým doskám Arduino a Raspberry Pi. Prečo potrebujeme integrovaný prevodník logickej úrovne ? Väčšina z vás rada hrá s Arduino a Raspberry Pi duri
Konverzia joysticku na USB v 80. rokoch: 7 krokov (s obrázkami)
Konverzia joysticku na USB v 80. rokoch: Tento originálny joystick Cheetah 125 z 80. rokov minulého storočia prešiel láskyplnou konverziou vďaka novým lesklým mikrospínačom, arkádovým tlačidlám a doske ovládača Pimoroni Player X. Teraz má štyri nezávislé " oheň " tlačidlá a pripája sa cez USB, pripravené na
Prevodovka pre počítač vyrobená zo starého joysticku (radenie H): 8 krokov
Prevodovka pre počítač vyrobená zo starého joysticku (radenie H): Máte radi autá? Máte radi skutočnú jazdu? Máte starý joystick? Toto je návod pre vás:) Ukážem vám, ako vyrobiť prevodovku pre počítač zo starého joysticku.- ---------------------------------------------------------- ---------------------------------------------
1A až 40A prúdový prevodník BOOST pre až 1 000 W jednosmerný motor: 3 kroky
1A až 40A prúdový zosilňovač pre až 1 000 W jednosmerný motor: Ahoj! V tomto videu sa naučíte, ako vytvoriť prúdový zosilňovač pre vysokovýkonné jednosmerné motory až do 1 000 W a 40 ampérov s tranzistormi a transformátorom so stredovým odbočením. Napriek tomu, prúd na výstupe je veľmi vysoký, ale napätie bude r
Stanica emulácie joysticku PSP pre PC: 3 kroky
Stanica emulácie joysticku PSP pre PC: Chcete sa niekedy vrátiť k starým dobrým časom herných systémov? SNES, NES a N64. Máte PSP s povoleným domácim varením? Našiel som skutočne úžasný spôsob, ako niektoré z týchto klasík prežiť vo veľkom štýle. Teraz, keď sa budeme zaoberať emulátormi, existuje obava z