Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kłopoty z zaprogramowaniem Arduino Leonardo jako kierownicy

07 Lut 2018 17:11 399 2
  • Poziom 4  
    Witam,
    od pewnego czasu chciałem zrobić kierownicę do grania w ETS 2, czasami Asseto Corsa i wykorzystać do tego moje Arduino Leonardo. Znalazłem bibliotekę Joystick, ale miała ona zbyt mało osi analogowych, więc znalazłem wersje 2.0 https://github.com/MHeironimus/ArduinoJoystickLibrary/tree/version-2.0 która ma dokładniejsze odczyty oraz więcej osi, ale nie mogę jej zrozumieć czy mógłby ktoś napisać program albo chociaż wzór lub wytłumaczył w jaki sposób ma to zrobić. Potrzebuje gazu, hamulca, sprzęgła, samej kierownicy która jest zamontowana na potencjometrze wieloobrotowym(10 obrotów)i chciałbym programowo ograniczyć go aby miał po 2,5 obrotów w każdą strone oraz analogowy hamulec ręczny. Skrzynie biegów napisze sam. Z góry dziękuje za pomoc.
  • Poziom 32  
  • Poziom 4  
    No właśnie nie moge zrozumieć, ale dziękuje za odpowiedź.
    Dodano po 19 [godziny] 36 [minuty]:
    Code:
    #include <Joystick.h>
    

    Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_GAMEPAD,
    8, 0,
    true, true, true,
    false, false, false,
    true, true,
    true, true, true);

    int steer = A0;
    int gas = A1;
    int brake = A2;
    int clutch = A3;
    int handbrake = A5;

    void setup() {
    pinMode(2, INPUT_PULLUP);
    pinMode(3, INPUT_PULLUP);
    pinMode(4, INPUT_PULLUP);
    pinMode(5, INPUT_PULLUP);
    pinMode(6, INPUT_PULLUP);
    pinMode(7, INPUT_PULLUP);
    pinMode(8, INPUT_PULLUP);
    pinMode(9, INPUT_PULLUP);
    pinMode(A0, INPUT);
    pinMode(A1, INPUT);
    pinMode(A2, INPUT);
    pinMode(A3, INPUT);
    pinMode(A4, INPUT);

    Joystick.begin();

    Joystick.setSteeringRange(240, 783);

    }
    const int pinToButtonMap = 2;

    int lastButtonState[8] = {0, 0, 0, 0, 0, 0, 0, 0};


    void loop() {

    for (int index = 0; index < 8; index++)
    {
    int currentButtonState = !digitalRead(index + pinToButtonMap);
    if (currentButtonState != lastButtonState[index])
    {
    Joystick.setButton(index, currentButtonState);
    lastButtonState[index] = currentButtonState;
    }
    }
    //Ster
    int steerValue = analogRead(steer);
    Joystick.setSteering(steerValue);


    //Gaz
    int gasValue = analogRead(gas);
    Joystick.setAccelerator(gasValue);


    //Brake
    int brakeValue = analogRead(brake);
    Joystick.setBrake(brakeValue);


    //Clutch
    int clutchValue = analogRead(clutch);
    Joystick.setThrottle(clutchValue);


    //Handbrake
    int handbrakeValue = analogRead(handbrake);
    Joystick.setRudder(handbrakeValue);
    }

    Witam, czy czy dobrze napisałem ten kod? Bo nie działa :(