Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Computer ControlsComputer Controls
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Arduino Uno na joystick/kierownicę PC

27 Mar 2018 17:39 4206 18
  • Level 4  
    Witam.
    Chciałbym się przyczynić do zbudowania własnej kierownicy z Arduino Uno. Widziałem różne filmiki na yt ale to były po angielsku i za bardzo nie rozumiem. Próbowałem robić to samo co oni ale nie wychodziło. Tą kierownicę to chce zrobić z 4 potencjometrów (kierownica, gaz, hamulec i sprzęgło). Mam nadzieję, że może się ktoś znajdzie, który mi powie co i jak krok po kroku to zrobić.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Computer ControlsComputer Controls
  • Level 37  
    Witam

    Kontrolery idzie bardzo prosto wykonać używając potencjometrów lub czujników analogowych Halla np. A1324 z magnesami neodymowymi. Sposób podłączenia tradycyjnego potencjometru do Arduino
    Arduino Uno na joystick/kierownicę PC

    Code:
    int odczytanaWartosc = 0;
    
     
    void setup() {
      Serial.begin(9600); //Uruchomienie komunikacji przez USART
    }
     
    void loop() {
      odczytanaWartosc = analogRead(A5); //Odczytujemy wartość napięcia
      Serial.println(odczytanaWartosc); //Wysyłamy ją do terminala
      delay(200); //Czekamy, aby wygodniej odczytywać wyniki 
    }
    -zamiast (200) w opcji "delay" można umieścić mniejsza liczbę 20,50,80,100
    forbot.pl Info. - podłączenie i test potencjometru w roli dzielnika napięcia. Arduino - rysowanie wykresów

    Forbot Kurs podstaw Arduino



    Kontrolery typu Joystick, Wolanty, Kierownice, itp. można podłączyć do Arduino Leonardo/Micro PRO z CHIP-em ATmega32u4/ AT90usb646/At90usb1286 za pomocą gotowego programu o nazwie [MMJoy2 ver-20160818] info. MMJoy/MMjoy2 - Build your own USB controller

    Polski poradnik jak wykonać kontroler - Joystick. Jak podałczyć krok po Kroku znajdziesz na Forum Miłośników Symulatorów Lotniczych - MMJoy-2 Konfiguracja i wybranie opcji - Arduino LEONARDO Atmega32U4
  • Level 4  
    Pobrałęm ten program MMJoy2 i za bardzo nie wiem jak mam zamienić moje Arduino UNO na kontroler, który będzie miał 4 osie. Bardzo proszę o pomoc. :(
  • Level 37  
    Witam

    W Arduino UNO masz CHIP ATmega328, to raczej ten MMJoy2 może nie zadziałać, bo trzeba wybrać z menu MMJoy2 dla Chipów -ATmega32u4/ AT90usb646/At90usb1286.

    Jest możliwość wykonania kontrolera na bibliotece "Joystick.h", czyli w środowisku IDE dla Arduino. Aby się bawić w budowę kontrolera to musimy posiadać prosty miernik "MULTIMETR i tu lepiej wybrać Buzerem -20-35zł oraz switch(przecisk ), dioda, potencjometr oraz jakieś kable do połączenia dobrze byłoby mięć jakąś płytę stykową do wykonywania prototypów.

    Arduino Uno na joystick/kierownicę PC
    - potencjometr -B50K, B10K lub podobny o charakterystyce liniowej
    - switch -przycisk
    - dioda

    A.
    Przycisk "switch" w tym projekcie zawsze "+5V" łączymy przez diadą i podobnie diodę LED "świecącą" przez rezystor
    przykład.
    Arduino Uno na joystick/kierownicę PC

    B.
    Potencjometr tradycyjny -czyli analogowy o charakterystyce liniowej.
    Arduino Uno na joystick/kierownicę PC

    Arduino Uno na joystick/kierownicę PC

    1 - masa (GND)
    2 - wyjście (OUT) czyli do Arduino wpinamy w piny analogowe od A0-A5
    3 - VCC(np.+5V)z arduino

    1 i 3 nie ma znaczenia można podałczyć odwrotnie.


    Arduino i kod programu w środowisku IDE jako kontroler widoczny Windows- Ikona "Kontroler gier" - w "Urządzenia i drukarki
    W środowisku Arduiono IDE możemy napisać kod programu na bibliotece joystick.h dla przycisków,osi, przepustnic, kierownic, itp. wymaga pobrania biblioteki ArduinoJoystickLibrary-version-2.0.zip dla Windows i jest dostępna jako Ikona "Kontroler gier" - w "Urządzenia i drukarki "
    Info. Arduino Leonardo/Micro As Game Controller/Joystick


    Arduino Uno na joystick/kierownicę PC

    KOD- podstawowy biblioteki Joystick dla Osi X i Y
    Code:
    #include <Joystick.h>
    
    Joystick_ Joystick;

    void setup() {
    //------------------------------------
    Joystick.begin();  // ---- tu info. >>> http://www.instructables.com/id/Arduino-LeonardoMicro-as-Game-ControllerJoystick/
    //------------------------------------
    }
    void loop(){
      //------------------- Osie dla Joystika X,Y
          //------------- os X
          int xAxis=analogRead(A0);// pin Analogowy
          xAxis=map(xAxis,0,1023,-127,127);
          Joystick.setXAxis(xAxis);
         //-------------- os Y
          int yAxis=analogRead(A5); //pin Analogowy
          yAxis=map(yAxis,0,1023,-127,127);
          Joystick.setYAxis(yAxis);
      //----------------------------------------
     
    }


    Fragment działającego KOD-u przycisku
    Code:
     Joystick.begin();
    

      pinMode(3,INPUT_PULLUP); //-------- inicjacja jednego przycisku switch dla pin Digital nr 3
    }

    void loop(){
      //---------------------przycisk Switch dla pin nr 3
      int button0Val=digitalRead(3); // perzyciski od nr 1- 32, ustawienie dla - !buttonXXVal(0-31)
      Joystick.setButton(0, !button0Val); //przycisk 1,
    }


    Arduino Uno na joystick/kierownicę PC
  • Level 4  
    A da się zrobić aby była jeszcze trzecia oś?

    Dodano po 29 [minuty]:

    No i oczywiście na moje Arduino UNO nie działa. Musiałbym mieć Leonardo lub Micro.
  • Computer ControlsComputer Controls
  • Level 37  
    jakubix125 wrote:
    A da się zrobić aby była jeszcze trzecia oś?

    Tak możesz zrobić więcej osi tyle ile potrzebujesz i masz wolnych pinów pisałem np. od A0 do A5 czyli 5 osi. Tylko w Joystiku są tylko dwie osie X i Y trzecią osią moze być orczyk, przepustnica gazy podobnie w kierownicy
    Fragment dla trzech osi X, Y, Z
    Code:
    void loop(){
    
          //------------------- Osie dla Joystika X,Y
          //------------- os X
          int xAxis=analogRead(A0);// pin Analogowy
          xAxis=map(xAxis,0,1023,-127,127);
          Joystick.setXAxis(xAxis);
         //-------------- os Y
          int yAxis=analogRead(A5); //pin Analogowy
          yAxis=map(yAxis,0,1023,-127,127);
          Joystick.setYAxis(yAxis);
         //------------- os Z
          int zAxis=analogRead(A3); //pin Analogowy
          zAxis=map(zAxis,0,1023,-127,127);
          Joystick.setZAxis(zAxis);

      //----------------------------------------


    Przy projektowaniu kontrolerów można zastosować układy "scalaki", do których można podłączyć więcej elementów przycisków i potencjometrów, a przez to zaoszczędzić w Arduino piny analogowe lub cyfrowe. Jednak wymaga to większej wiedzy na temat pisania Kodu. Zauważyłeś pewnie, ze jeden przycisk wymaga 2 żył kabli (GND, pin Arduino) jak potrzebujesz np. 23 przycisków to już może być problem z budową takiego kontrolera np. Joysticka. W jaki sposób przedostać te 23 zył plus Vcc i GND przez trzpień rekojeśći Josticka do plytki PCB. Rozwiązano to za pomocą układów, które redukują ilość żył od 3-5 i jest to świetna metoda na budowanie rożnego rodzaju skompilowanych kontrolerów.


    Przyciski
    układy
    CD4021 Rejestr przesuwny - łączenie do max. 8 układów co daje 64 przyciski i tylko 5 kabli (VCC,GND, DigitalPin, CLOCK, DigitalPin) info. Shifting In & the CD4021B
    PCB dwustronna z ukł. 2x 4021 info. Strona z PCB
    Arduino Uno na joystick/kierownicę PC
    Strona-1 PCB
    Strona-2 PCB

    74HC165 rejestr - przesuwny podobny jak 4021
    74HC595 rejestr przesuwny

    PCF8574N - ekspander 8bit -8szt. przycisków i tylko 4 zyły GND,VCC, SCL,SDA w Arduino UNO nie korzystasz jednoczenie z pinów A4(SCL) i A5(SDA)
    MCP23017- ekspander- 16szt. przycisków

    Potencjometry
    Układ MCP 3201/3202/3204/3208

    Wykonanie potencjometrów z magnesami neodymowymi o średnicy fi6 ( MP 6Ax2x2,5-N38)- potencjometry bezstykowe

    układ KMZ60, TLE 5010/5011 - cyfrowe
    układ czujnik Halla A1324 - analogowe (3 pinowe)- element najczęściej wykorzystywane do budowania -potencjometru bezstykowego.

    Wszystko na temat budowy kontrolerów Joystick itp. z wykorzystaniem powyższych układów na Arduino Leonardo/Micro i inne
    info. MMjoy2 USB 2.0
    Arduino - biblioteka Joystick.h, przyciski, Hat i układ 4021.
  • Level 4  
    Po wpisaniu kodu próbowałem go wgrać i taki błąd mam.
    Arduino Uno na joystick/kierownicę PC

    Czyli wychodzi na to że muszę kupić Leonardo lub Micro?
  • Level 37  
    jakubix125 wrote:
    Czyli wychodzi na to że muszę kupić Leonardo lub Micro?

    NIE! musisz kupować Leonardo/Micro jak piszesz w środowisku IDE Arduino. Kupujesz Arduino Leonardo/Micro PR (ATmega32u4) tylko i wyłącznie jak chcesz wykorzystać w aplikacji MMJoy2

    Sprawdź, czy w Menu->PLIK-> Przykłady- >Masz "Joystick"w graną Biblotekę jak nie to trzeba ręcznie w rozpakować a następnie skopiować zawartość z "ArduinoJoystickLibrary-version-2.0.zip" do katalogu (Win7) C:\Users\Twoja nazwa PC\Documents\Ardiuno\libraries\ -czyli powinieneś mieć te katalog/pliki w tym katalogu "\libraries ". Jak to zrobisz to po uruchomieniu środowisko IDE Arduino powiennieś mieć biblotekę "Joystick" w przykładach.

    - Joystick
    - .gitignore
    - LICENSE
    - deploy.bat
    - README.md
    - deploy.sh
  • Level 4  
    Mam tą bibliotekę "Joystick" w przykładach, ale jak próbuję wgrać jakiś przykład w płytkę to mam ten sam błąd. Ja coś myślę, że to nie działa na UNO tylko na Leonardo , Mikro, etc.
  • Level 37  
    jakubix125 wrote:
    Ja coś myślę, że to nie działa na UNO tylko na Leonardo , Mikro, etc.

    -słuszna uwaga.
    info. Arduino Leonardo/Micro
    Quote:
    WAŻNA UWAGA: Ten artykuł dotyczy Arduino IDE w wersji 1.6.6 (lub nowszej). Aby dodać kontroler gier USB do Arduino Leonardo lub Micro za pomocą Arduino IDE w wersji 1.6.5 (lub niższej) zapoznaj się z poniższą instrukcją: Dodaj kontroler gier USB do Arduino Leonardo / Micro.
    Po wyjęciu z pudełka Arduino Leonardo i Arduino Micro pojawiają się na komputerze głównym jako ogólna klawiatura i mysz. W tym artykule omówiono, w jaki sposób Arduino Leonardo i Arduino Micro mogą pojawiać się jako ogólny kontroler gier lub joystick. Ten projekt będzie działać tylko z produktami Arduino opartymi na mikrokontrolerach ATmega32u4 (np. Arduino Leonardo i Arduino Micro). Nie będzie działać z Arduino UNO, ponieważ jest oparty na mikrokontrolerze ATmega328

  • Level 2  
    Witam wszystkich.
    Robię prosty projekt pedałów (oś x, y) do rajdów pod Richard Burns Rally. Zaczęło się wszystko od dramatycznej czułości pedałów oryginalnych.
    Kierownica jako tako działa... Postanowiłem zrobić osobny kontroler do pedałów.
    Mam :
    win 7, 64
    płytka Arduino Micro Pro
    2 potencjometry liniowe: B10K

    Wszystko połączone wg schematów - łączy się z Arduino IDE po USB
    Połączenie analogowe na pinach A0 i A2 - monitor wskazuje zakres 0-1023
    I tu niby wszystko ok, ale problem zaczyna się po włączeniu gry - czułość jest dalej dramatyczna - w sumie to ruch ok 30 stopni potencjometra powoduje praktycznie max gaz - brak możliwości gry
    Próbowałem wielu kodów do arduino IDE - bez zmian...
    Postanowiłem połączyć płytkę Arduino z programem MMJoy2 - ponieważ ma duże możliwości kalibracji.
    Załadowałem firmware MMJoy2 i jestem na etapie: Connected to VID [8888] PID [8888] MMJ-reset
    Czytałem, że trzeba teraz załadować JoyLoader - jest w katalogu MMJoy2 - ale nie wiem jak go zainstalować...
    Nie wiem czy dobrze rozumiem, że na tym etapie już nie współpracuję z Arduino IDE, tylko ten JoyLoader załatwia sprawę ?
    Po załadowaniu firmware MMJoy2 miałem chwilę ale nagle straciłem kontroler w win7 i Arduino IDE nie widzi portu, więc nie da się załadować kodu - czy JoyLoader to wszystko załatwi?
    Proszę o wskazówki - z góry dziękuję.
    Pozdro
  • Level 37  
    Witam

    Jak jest załadowany Firmware z MMJoy-2 rozpoznawany i widoczny w Menadżer Urządzeń jako Arduino na Porcie COM. A za to będzie widoczny w Panel sterownia >Sprzęt i Dźwięki>Urządzenia i drukarki, jako kontroler np. u mnie jest pod nazwą Joy-orczyk

    Dodano po 26 [minuty]:


    Tu masz sciągę jak powinieneś wgrać MMJoy-2 https://www.geneb.org/mmjoy2/pro-micro-instructions.pdf



    Krok po kroku mój post #19 -- wybierasz w MMJoy-2 Zakładce "Source" potencjometr analogowy "IntSensor"

    1. Zapis Projektu - Save stes to file(tylko jeden zapis)
    2. Za każdym razem jak zmienisz ustawienia robisz - (zapis ustawień)-
    Save stes to file
  • Level 2  
    Witam

    Przed wgraniem firmware MMJoy2 miałem w Menadżerze Urządzeń sterownik SparkFun na Porcie COM.
    Po wgraniu MMJoy2 zniknął sterownik z Managera i pojawił się kontroler "MMJ-reset" - tak jak napisałeś :),
    MMJoy teraz nie widzi portu COM, ale działa.
    Ustawiam oś X i Y ( pedał i hamulec): Int Sensor - MCUPort - F5, F7 (odpowiedniki dla płytki SparkFun Micro Pro), precyzja 10 bit
    Value row i Value Processed (podczas kręcenia potencjometrem pokazuje 0-1023)
    Wygląda na to, że jest OK :)
    W celu ustawienia czułości, ustawiłem "spec. function" (standardowe ustawienie jest na 200 - to właśnie powoduje pełny zakres w krótszym czasie)(wszystko na 100 - uzyskuję 100% liniowości) i zaznaczam #2 w ustawieniach osi.
    Ustawień kalibracji i filtrów na razie nie ruszałem, żeby nie zmieniać na raz za dużo parametrów.
    I tutaj może być mój błąd - zapisuję ustawienia: "Save set to device" - nie mam żadnych reakcji w grze na jakiekolwiek zmiany.
    Piszesz, że trzeba zapisać: "Save set to file" - myślałem, że to zapis do prywatnych celów. - zrobię próbę i odpiszę...
    Jeszcze jedno pytanko: MMJoy2 setup ma być włączony podczas korzystania z gry?
    Pozdro

    Dodano po 38 [minuty]:

    Niestety bez zmian...
    Po zapisie do pliku, utworzyło mi w katalogu MMJoy2 plik: Pedały.mmjoy - typ pliku MMJoy Config file.
    Może trzeba ten plik przekierować gdzieś, żeby go widziało?
    W programie MMJoy wszystko ładnie działa - kręcenie potencjometrem daje wartości maksymalne w przy pełnych obrotach potencjometru (ok. 220 stopni skrętu...
    W grze nadal pełny zakres gazu to ok 30 stopni skrętu potencjometrem, początkowo nic potem nagłe uderzenie (full gaz) potem skręt już bez reakcji.
    Coś jest nie tak, zastanawia mnie jeszcze jedno - w ustawieniach po prawej na górze mam "Ok. Used axis 0, buttons 128." - dziwne bo osie X, Y mam zdefiniowane a tu jakby nie widział tego...

    Dodano po 14 [minuty]:

    Arduino Uno na joystick/kierownicę PCArduino Uno na joystick/kierownicę PC

    Dodano po 55 [minuty]:

    jeszcze czytałem o tym, że koledzy nieużywane piny analogowe zwierają do masy... co myślicie o tym?
  • Level 37  
    kroplaxer1 wrote:
    jeszcze czytałem o tym, że koledzy nieużywane piny analogowe zwierają do masy... co myślicie o tym?
    Nie zwieram do masy zostawiam.

    kroplaxer1 wrote:
    Niestety bez zmian...
    Po zapisie do pliku, utworzyło mi w katalogu MMJoy2 plik: Pedały.mmjoy - typ pliku MMJoy Config file.
    Może trzeba ten plik przekierować gdzieś, żeby go widziało?
    Jak wcześniej pisałem po zimnach ustawień trzeba wykonać nowy zapis - czyli "Save set to
    device"


    Oznaczenia pinów w Leonardo Micro Pro (ATmega34U4).
    Arduino Uno na joystick/kierownicę PC Arduino Uno na joystick/kierownicę PC

    Dodano po 54 [minuty]:

    Sprawdzasz sobie jak działają potencjometry w DIView-MMJ narzędzie w MMjoy-2 w katalogu Tools później się kalibruje jak każdy kontroler z poziomu Windows
    Arduino Uno na joystick/kierownicę PC
  • Level 9  
    Witam.
    Jeśli mogę dołączyć po dość długim czasie do dyskusji, jakie przerobić kod, aby potencjometr skonfigurowany pod oś Z działał płynnie, chodzi mi o płynne przesuwanie się słupka we właściwościach kontrolera?
  • Level 37  
    miniek_nrw wrote:
    jakie przerobić kod, aby potencjometr skonfigurowany pod oś Z działał płynnie, chodzi mi o płynne przesuwanie się słupka we właściwościach kontrolera?
    Płynnie ? Sprawdz połaczenia lutowane lub mozę byc uszkodzona ścieżka w potencjometrze. Jak uzywasz MMJoy-2 (ustawiasz centrum)to później jeszcze kalibrujesz w Windows.
  • Level 9  
    Właściwie w grze słupek działa płynnie, jedyne co, to zakres potencjometru przekracza słupek w konfiguracji kontrolera, zaczyna od połowy, dochodzi do końca, następnie od początku do końca i znowu od początku do jakiejś 1/3 słupka. Nie mogę poradzić sobie z parametrami w linijce

    zAxis = map(zAxis, 0, 1023, -127, 127);

    Zmieniałem parametry wielokrotnie i zawsze jest inaczej niż bym chciał. Chcę, aby zakres potencjometru równał się długości słupka. Jest to potencjometr z zestawu Arduino.
  • Level 37  
    miniek_nrw wrote:
    Nie mogę poradzić sobie z parametrami w linijce
    Masz tak podłaczony ? Podąłcz sobie napięcie i sprawdź miernikiem przy ustawieniu potencjometru na 50% musi byc połowa napiecia na OUT.
    Arduino Uno na joystick/kierownicę PC
  • Level 9  
    Po przeładowaniu gry, słupek odpowiada zakresowi potencjometru. Dokładnie tak mam podłączony, potencjometr ustawiony na środku, słupek też. Środek to 0 (zero), kręcę w lewo, wartość na monitorze portu szeregowego płynnie spada do -127, powrót do 0, kręcę w prawo, wartości początkowo płynnie się zwiększają, po czym następuje bardzo szybki przeskok na wartość maksymalną. Po zmianie zakresu na 0-1023, jest to skok rzędu około 130 przy minimalnym ruchu potencjometrem, potem ponad 200 i 500. Nie mam pojęcia, o co chodzi?