Самодельный руль для ПК на Arduino Leonardo

Тема в разделе "Глядите, что я сделал", создана пользователем issaom, 18 дек 2017.

  1. issaom

    issaom Гик

    Все оказалось так просто - даже нечего описывать....
    steering wheel for PC_.JPG
    Монтажная плата:
    steering wheel for PC sxem.jpg
    Скетч:
    Код (C++):
    #define DATA  7
    #define LATCH 2
    #define CLOCK 4                                                                                                                                                                                                                                        
    #define CLKUS 1

    #define X  A1
    #define Y  A2
    #define R  A3

    #include <Joystick.h>

    byte dataButton;

    void setup() {
      pinMode(DATA,INPUT);
      pinMode(LATCH,OUTPUT);
      pinMode(CLOCK,OUTPUT);
      Joystick.begin();
    }


    void loop() {

      int x, y, r;
      dataButton = 0;

      // считываем текущее значение джойстика и руля
      x = analogRead(X);
      y = analogRead(Y);
      r = analogRead(R);

      // читаем состояние кнопок на сдвиговом регистре
      digitalWrite(LATCH,HIGH); // Parallel mode
      for (int i=7; i>=0; i--) {
       digitalWrite(CLOCK,HIGH);
       delayMicroseconds(CLKUS);
       dataButton |= (digitalRead(DATA) ? (1<<i) : 0);
       digitalWrite(CLOCK,LOW);
       delayMicroseconds(CLKUS);
       if (i==7) digitalWrite(LATCH,LOW); // Serial Mode
      }

      //присваиваем кнопкам игрового контроллера значения прочитанные из регистра
      Joystick.setButton(0, bitRead(dataButton,4));   //Green
      Joystick.setButton(1, bitRead(dataButton,5));   //Red
      Joystick.setButton(2, bitRead(dataButton,6));   //White
      Joystick.setButton(3, bitRead(dataButton,0));   //Blue
      Joystick.setButton(4, bitRead(dataButton,1));   //Red
      Joystick.setButton(5, bitRead(dataButton,2));   //Yellow
      Joystick.setButton(6, bitRead(dataButton,3));   //Red
      Joystick.setButton(7, bitRead(dataButton,7));   //Joy

      y = map(y, 0, 1023, 127, -127); //Ось Y /газ - тормоз
      Joystick.setYAxis(y);

      r = map(r, 0, 1023, 127, -127);
      Joystick.setXAxis(r);           //Ось Х /руль

      delay(50);
    }
     

     
    sys, olegoriy, Толик Иванов и ещё 1-му нравится это.
  2. РоманVar

    РоманVar Нуб

    Здравствуйте!
    Создал тему, возможно вам это будет интересно. Пожалуйста, свяжитесь со мной!
     
  3. KamAdm

    KamAdm Нерд

    Не уверен, но мне кажется руль нужно было не на переменный резистор сажать, а на энкодер