KONTROLERY DO GIER               (FSX+AIRBUS A320)

KONTROLERY DO GIER (FSX+AIRBUS A320)

Witam.

Chciałbym się z Wami podzielić tym co udało mi się stworzyć po miesiącu od zakupu mojego pierwszego Arduino Leonardo.

Każdy z graczy (zwłaszcza lubiących Symulatory) lubi kontrolować grę w wygodny dla siebie sposób. Niestety większość symulacji przez swoją złożoność funduje nam przymus rozglądania się za pomocą myszki i szukania odpowiednich przycisków. Można to oczywiście w większości przypadków załatwić za pomocą skrótów klawiaturowych, ale zwłaszcza w przypadku symulacji ilość funkcji komplikuje całą sprawę i korzystanie z klawiatury ogranicza przyjemność z rozgrywki.

Lekarstwem na to może być KONTROLER!!! 

Niestety Kontrolery, które możemy kupić są albo mało efektywne i nie do końca dostosowane do naszej gry albo (jak w moim przypadku…) bardzo drogie.

 

…jedyny sposób to ZBUDOWAĆ WŁASNY KONTROLER.

 

Opiszę swoje zmagania na podstawie budowy DWÓCH KONTROLERÓW do AIRBUSA A320 w grze Flight Simulator X.

20140516_102028

 

  1. OD CZEGO ZACZĄĆ:

Na samym początku warto zastanowić się, jakie funkcje w grze możemy kontrolować za pomocą skrótów klawiaturowych, a które z nich chcielibyśmy kontrolować i w jaki sposób. Czy to za pomocą zwykłego przycisku czy może przełącznika albo pokrętła. Potem trzeba je starannie policzyć, gdyż oczywiście ilość pinów w Arduino nie jest nieskończona (ale i na to jest sposób, ale o tym później). Ja nie miałem tego problemu, ponieważ wszelakie dodatki do mojej gry oferują duże możliwości kontroli za pomocą skrótów.

20140404_183520

 

 

  1. OBUDOWA I KOMPONENTY:

Bardzo zależało mi, aby wygląd moich kontrolerów był zbliżony do paneli kontrolnych w prawdziwym kokpicie, pozostało więc tylko wybranie obudowy oraz podobnych do zainstalowanych w prawdziwym samolocie przycisków i przełączników. Obudowę postanowiłem kupić. Wydatek dosłownie kilku złotych, a bardzo ułatwiło mi to pracę.

20140315_080757

 

 

  1. PRZYGOTOWNIE OBUDOWY

Na samym początku warto zaprojektować i wydrukować sobie już gotowy wygląd panelu. Ułatwia to rozplanowanie otworów. U mnie z uwagi na liczbę przycisków było to nie lada wyzwaniem.

20140315_132946 20140219_11171720140329_145643

Po zamocowaniu przycisków przyszedł czas na zlutowanie całego układu.

20140316_094204 20140329_231953

 

 

  1. LUTOWANIE UKŁADÓW

Jeśli ilość przycisków w projekcie przekracza możliwości Arduino, a w moim przypadku tak było, można użyć Ekspanderów. Ja zużyłem ich maksymalną ilość (czyli 8 jednego typu).

20140316_18360720140316_123743

Sam schemat jest bardzo prosty i nie wymagał ode mnie jakiejś większej wiedzy. Każdy przycisk ma swój osobny PIN, a przełączniki 3-funkcyjne są po prostu podłączone do różnych napięć (jedna nóżka do 3,3V a druga do 5V) a całość do Pinu analogowego, który monitoruje jaka jest obecna wartość napięcia (SCHEMATY NA KOŃCU ARTYKUŁU).

20140220_01342320140328_142535

Jeśli gra na to pozwala, można również użyć wyświetlacz, który będzie nam wyświetlał jakieś dane z gry lub też dane wprowadzane za pomocą przycisków. Ja wyświetlacz podpiąłem bezpośrednio do Arduino natomiast przyciski przez EKSPANDERY PCF 8574 (mają dobrze napisaną Bibliotekę pod Arduino).

20140316_13120520140316_18362920140317_09085420140317_103557

 

Po zmontowaniu i zlutowaniu całego układu czas na…

 

  1. PROGRAMOWANIE

Dla mnie była to rzecz prosta i trudna zarazem. Moje kontrolery działają podobnie jak klawiatura.

Po wciśnięciu przycisku wysyłają odpowiednią kombinację przycisków. Trudnością było dostosowanie programu tak, aby dane na wyświetlaczu reagowały tak samo jak na wyświetlaczu w grze. Również sama ilość przycisków była trudna do ogarnięcia, ale żeby nie pomylić się przy pisaniu programu spisałem sobie, na którym pinie jest dany przycisk (SZKICE NA KOŃCU ARTYKUŁU).

20140317_161208

Jeśli chodzi o wyświetlanie danych wysyłanych przez grę też nie było to trudne, ponieważ do mojej gry istnieje programik, który wyciąga odpowiednie dane z gry i wysyła je do Arduino przez port szeregowy. Wystarczyło je odczytać, odpowiednio „obrobić” i wyświetlić w odpowiednim miejscu na wyświetlaczu.

 

  1. WYGLĄD KONTROLERA

Najprostszym sposobem na dobry wygląd panelu jest wydrukowanie go na papierze fotograficznym.

Ja skorzystałem z usługi wydruku natychmiastowego zdjęć w jednym  z salonów… (może nie będę robił reklamy), a następnie nakleiłem zdjęcie za pomocą dobrej taśmy dwustronnej. Kosztowało mnie to 2zł, a jak się zniszczy to zawsze mogę wydrukować następny i przykleić.

20140319_210431 20140319_214515 20140319_223003 20140320_102321

20140404_175716

Sam wygląd przycisków też jest efektem naklejenia na nie papieru foto.

 

PODSUMOWANIE

Cała zabawa w zrobienie tych kontrolerów pochłonęła mnie na jakieś 2 tygodnie. Ale było warto. Wiele się przy tym nauczyłem, a zaczynałem od zera. Nigdy się w to wcześniej nie bawiłem.

Kontrolowanie samolotu stało się dużo przyjemniejsze, a przede wszystkim dużo bardziej zbliżone do pilotowania w realnym świecie. ;)

 

Pozdrawiam,

P.S. Przepraszam, że opis mało szczegółowy od strony elektroniki…

…chętnie odpowiem na wszystkie pytania.

 

Zapraszam również do obejrzenia kontrolerów podczas pracy:

 

 

 

 

 

 

 

…i jeszcze takie małe usprawnienie z ostatnich dni…
Kontroler MCDU zamontowany na przepustnicy.
(w końcu Majsterkowania nigdy dość! :D )

20140522_074237 20140522_074455

 

 SCHEMAT PODŁĄCZENIA I SZKIC DLA KONTROLERA MCDU

(z jednym wyświetlaczem):

 

MCDU2_bb

 

 

SCHEMAT PODŁĄCZENIA I SZKIC DLA KONTROLERA OVHD & FCU

 (z dwoma wyświetlaczami):

 

OVHD&FCU_bb

 

 

Ocena: 4.92/5 (głosów: 150)

Podobne posty

52 komentarzy do “KONTROLERY DO GIER (FSX+AIRBUS A320)

    • te przycisku nie są podświetlane… ;)
      …to tylko taki efekt graficzny.
      Szukałem takich przycisków, ale nie znalazłem… są tylko duże i drogie… :(

      Odpowiedz
    • Jeśli kiedyś czas a przede wszystkim fundusze pozwolą… to zamierzam zbudować cały kokpit Airbusa A320 :) …a wtedy to już nie będzie mowy o kompromisach! :D
      …ten kontroler jest w skali 1:2 i ciężko by było umieścić po 2 diody w każdym przycisku… ;)

      Odpowiedz
  • WOOOW gratulacje pomysłu i wykonania. sam chciałem coś takiego sklecić do mojego symulatora ale obawiałem się programowania przycisków w MFSie. Powodzenia w kolejnych projektach.

    Odpowiedz
    • …tu masz prosty przykład ze strony Arduino ( z tego co wiem ta funkcja jest chyba tylko w arduino leonardo, micro i due):

      char ctrlKey = KEY_LEFT_GUI;

      void setup() {

      pinMode(2, INPUT_PULLUP);

      Keyboard.begin();

      }

      void loop() {

      while (digitalRead(2) == HIGH) {

      delay(500);

      }

      delay(1000);

      Keyboard.press(ctrlKey);

      Keyboard.press(‘n’);

      delay(100);

      Keyboard.releaseAll();

      delay(1000);

      }

      nie mogę wysłać teraz swojego kodu bo jestem w pracy… :/ ale jesli chcesz to zrobie to wieczorem (po 21.00)

      Odpowiedz
      • a u mnie wygląda to tak:

        char altKey = KEY_RIGHT_ALT;
        char ctrlKey = KEY_LEFT_CTRL;

        void setup() {

        pinMode(2, INPUT_PULLUP);

        Keyboard.begin();

        }

        void loop()

        {

        int pM = HIGH;
        int M = digitalRead(2);

        if ((M != pM) && (M == LOW))

        {

        Keyboard.press(altKey);

        Keyboard.press(ctrlKey);

        Keyboard.press(‘m’);

        delay(100);

        Keyboard.releaseAll();

        delay(200);

        pM = M;

        }

        }

        Po wciśnięciu przycisku wysyłana jest kombinacja: ” alt +ctrl + m ” a po 100 ms zwalniane są wszystkie klawisze.

        Przy wysyłaniu samej litery bez klawiszy funkcyjnych można też użyć poprostu: Keyboard.print(“m”);

        Odpowiedz
  • Zrobiłem ostatnio coś bardzo podobnego, tylko do Kerbal Space Program, i nie musiałem użyć Arduino Leonardo, bo istnieje plugin do KSP używający portu UART.
    Ale dzięki tobie mam pomysł, jak zrobić więcej przycisków, dzięki :D
    5/5

    Odpowiedz
    • …to by było zbyt dalekie od oryginału. Podświetlenie musi włączać arduino po otrzymaniu odpowiedniego komunikatu od FS-a. Nie każde wciśnięcie przycisku ma powodować łączenie podświetlenia. Do tego dochodzi fakt że muszą to być 2 odrębne podświetlenia do wyświetlania dwóch różnych komunikatów. :) Dlatego stwierdziłem, że lepiej już pominąć oświetlenie niż zrobić to po łebkach. Pozdrawiam :D

      Odpowiedz
    • Schematów nie robiłem bo wymyślałem je na bieżąco.
      Na Majsterkowie masz wszystko! Jak podłączyć wyświetlacz jak użyć Ekspanderów.
      Wcześniej zamieściłem Ci tu nawet link… to mi usunęli komentarz… dlatego opisuje dopiero teraz. ;)
      Po prostu nie chciałem się powtarzać.

      Program jest bardzo monotonny (dla każdego przycisku prawie to samo), więc wrzucanie całego programu (ponad 1000 linijek kodu dla każdego z kontrolerów) mijałoby się z celem. Jeśli chcesz to mogę zamieścić cały, ale jak interesuje Cie jak zrobiłem konkretną rzecz to pytaj chętnie pomogę.

      Podłączenie to tylko podpięcie kabla USB nie więcej. Sprawa się kompikuje, jeśli chcesz, aby Arduino przyjmowało i wyświetlało dane z gry. Wtedy musisz mieć do tego program na kompie, który te dane będzie wysyłał. Ja miałem gotowy programik z neta, który to robi dla FS-a i swój program musiałem pisać konkretnie pod niego. ;)

      Odpowiedz
  • Jak dobrałeś obudowę? Tzn co wpisałeś w google czy allegro szukając… druga sprawa, to jak zrobiłeś te otwory w plastikowej obudowie? wywierciłeś czy jak i w jaki sposób tak dokładnie ci niemalże wyszło? Trzecia i ostatnia sprawa, jak nakleiłeś z tego papieru(szablonu) to na przyciski bezpośrednio, bo tam jest szata graficzna też obudowy i same przyciski ale jakbyś nałożył literki A B C D E F G H itd. z calym szablonem to by się pogielo, czy Ty to wyciales z osobna ? Dziekuje za odpowiedz.!

    Odpowiedz
    • Jeśli chodzi o obudowy to wpisz: OBUDOWA UNIWERSALNA PLASTIKOWA.

      Otwory najpierw wierciłem a potem rozcinałem nożykiem. Te obudowy są z tworzywa, które dość łatwo poddaje się cięciu a przy tym nie pękają, ale nie ukrywam, że wycięcie otworów było najtrudniejsze ze wszystkich czynności.

      Wydrukowałem 2 zdjęcia: jeden z całym panelem a drugi z przyciskami i wycinałem wszystko osobno. :)

      Odpowiedz
  • Jestem pod dużym wrażeniem! …ale niestety zarówno arduino, jak i symulatory lotów to dla mnie tajemna magia. Chętnie zobaczyłbym jakiś film, na którym pokazałbyś jak to wszystko działa razem.

    Odpowiedz
    • Dlatego właśnie na samym początku napisałem, że tego typu “zabawki” są bardzo drogie… :/ Jakbym chciał kupić wszystkie części i złożyć kokpit to może bym się z projektem zamknął w 30000€.

      Ale przy odrobinie chęci można zrobić coś samemu i mieć z tego jeszcze większa satysfakcje :D

      Odpowiedz
  • CnC Generals :)
    Świetna sprawa, podziwiam pomysł i jakość wykonania, jednakże w samym wpisie przydałoby się więcej łopatologicznych detali dla ambitnych laików takich jak ja :)

    Odpowiedz
      • Sam robię coś podobnego i korzystam ze starej klawirki USB, tu nie ma żadnej filozofii, WSAD odpowiada za WSAD, ctrl, alt itd, wszystko w nowych szatach ale bez kombinacji – póki co :). W Twoim projekcie najbardziej interesuje mnie użycie potencjometrów do płynnej kontroli parametrów – nie miałbym pojęcia jak się zabrać za coś takiego. Szczególnie chodzi mi o moment skomunikowania Arduino z grą.
        Btw, czy projekt wykorzystuje też informacje pobrane z gry – przykładowo prędkość samolotu do wyświetlania ich na LCD? Bardzo mnie interesuje jak wydusić z gry informacje, tak, żeby były rozpoznawalne przez Arduino. Głowa pełna pomysłów ale braki w wiedzy mam :D Dzięki za odpowiedź i jeszcze raz gratuluję pomysłu i wykonania. Jak znajdziesz czas, chętnie dostosuję się do wszelkich wskazówek :)

        Odpowiedz
        • Zanim trafiłem na Arduino też chciałem przerabiać starą klawiaturę… ;) Jeśli chodzi o pokrętła…to są to Enkodery (nie potencjometry). Sterowanie nimi też jest bardzo proste… przekręcenie o jedną sekwencję w jedną stronę wysyła np: “N” a w drugą np:”M” tak jakbyś wciskał klawisze. Jeśli chodzi o komunikację z grą i pobieranie z niej danych… tu jest trudniejsza sprawa. Do mojej gry jest po prostu programik, który wyciąga w gry wszystkie możliwe dane i pozwala wybrać, które z nich ma wysyłać przez port szeregowy. Arduino je po prostu odczytuje, rozpoznaje i wyświetla w odpowiednim miejscu ( na filmiku tego nie widać, ale na lewym wyświetlaczu wyświetla się aktualna prędkość i kurs – nie zmieniają się ponieważ samolot stoi nieruchomo na pasie).

          Bez tego programu też nie miałbym pojęcia jak te dane wydobyć… TEŻ JESTEM POCZATKUJĄCYM.

          Jeśli do Twojej gry istnieje taki program to arduino trzeba programować już konkretnie pod niego bo każdy program może wysyłać te dane w innej postaci.

          Pozdrawiam, W razie pytań… PISZ :)

          Odpowiedz
          • Dzięki za odpowiedź :) Dzisiejszy dzień śmignął mi na lutowaniu, wielkimi krokami zbliża się testowanie kontrolera :) Trochę jeszcze mnie przeraża, ale łatwo się nie zniechęcam :) Dzięki za porady, w razie problemów pozwolę sobie uderzyć do Ciebie na Prv, żeby tutaj nie spamować :)

            Pozdrawiam!

            Odpowiedz
          • Wydobyć adresy poprzez Cheat Engine ( są w necie tutoriale) a następnie napisać program, który wysyła te dane do portu. Nie jest to trudne, a wyciągać możemy praktycznie każdy adres z pamięci.

            Odpowiedz
  • W sumie raczkuje w programowaniu i mam takie pytanko bo nie mogę wyłapać z kodu, arduino robi wszystko w petli więc w przypadku przełącznika ma stan wysoki bądź niski, jaka komenda odpowada za to by wysyłał np “D” tylko przy zmianie stanu z wysokiego na niski lub odwrotny?

    Odpowiedz
  • Takiego opisu szukałem od dawna :-).Zbudowałem dzięki temu swój sterownik z użyciem expanderów MCP23017 – 8 sztuk daje 128 przycisków, poradziłem sobie z ich zaprogramowaniem, ale nie mogę dać rady z encoderami. Czy możesz wskazać część kodu odpowiedzialną za ich obsługę? Może w formie komentarzy w zamieszonym wyżej kodzie? Chętnie skontaktuję się z Tobą również na maila w sprawie kokpitu do fsx. Pozdrawiam

    Odpowiedz
  • Witam.
    Czy ma ktoś pomysł jak wysterować siłowniki hydrauliczne lub elektryczne z fsx’a?
    Próbujemy zbudować podstawę do naszego kokpitu, która dawałaby wrażenie przeciążeń itp.

    Odpowiedz
  • Witam, z drugim sketch’em coś nie tak….wychodzi błąd kompilacji. Ktoś próbował?? Jakieś porady?? Bardzo dobry materiał i zabieram się do zrobienia podobnego.

    Odpowiedz
  • Witam, bardzo zainspirował mnie ten artykuł do tego sotpnia, że chciałbym podjąć próbę wykonania takiego samego kontrolera na pocżątek overhead. Czy mogę jeszcze liczyć na pomoc autora?

    Odpowiedz
  • Jak użyć tego kodu bez ekranu i na jakiej wersji i z jakimi bibliotekami, bo nie bardzo chce mi działać ten kod. A posiadam Leonardo i ekspandery , a od miesiąca próbuje ruszyć coś..

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?