Реализация двух джойстиков и кнопок для игр ProMicro

Respekt
Offline
Зарегистрирован: 06.07.2019

// pin mappings
const int pinButton2 = 2; // кнопка ручки 1
const int pinButton3 = 3; // кнопка ручки 2 
const int pinButton4 = 4; // кнопка ручки 3
const int pinButton5 = 5; // кнопка джойстика 1
const int pinButton6 = 6; // кнопка джойстика 2
const int pinX1 = A1; // Ось X джойстика 1
const int pinY1 = A0; // Ось Y джойстика 1
const int pinX2 = A3; // Ось X джойстика 1
const int pinY2 = A2; // Ось Y джойстика 1
int VpinX1, VpinY1, VpinX2, VpinY2, = 0; // переменные для хранения значений осей

void setup() {
  // pinsetup
  pinMode(pinButton2, INPUT_PULLUP);
  pinMode(pinButton3, INPUT_PULLUP);
  pinMode(pinButton4, INPUT_PULLUP);
  pinMode(pinButton5, INPUT_PULLUP);
  pinMode(pinButton6, INPUT_PULLUP);

  // Sends a clean report to the host. This is important on any Arduino type.
  Gamepad.begin();
  Serial.begin(9600);
}

void loop() {
  // check each button and press Gamepad if needed

   if (!digitalRead(pinButton2))
   Gamepad.press(2);
  else
    Gamepad.release(2);
    
      if (!digitalRead(pinButton3))
    Gamepad.press(3);
  else
    Gamepad.release(3);
  
  if (!digitalRead(pinButton4))
    Gamepad.press(4);
  else
    Gamepad.release(4);

  if (!digitalRead(pinButton5))
    Gamepad.press(5);
  else
    Gamepad.release(5);

      if (!digitalRead(pinButton6))
    Gamepad.press(6);
  else
    Gamepad.release(6);
    
    VpinX1 analogRead (pinX1); // значение оси Х1
    VpinY1 analogRead (pinY1); // значение оси Y1
    VpinX2 analogRead (pinX2); // значение оси Х2
    VpinY2 analogRead (pinY2); // значение оси Y2

  // write the information to the host now!
  Gamepad.write();
}

Здравствуйте! Пытаюсь прописать два джойстика... ткните где моя ошибка?

error: expected ';' before 'analogRead' Ошибка компиляции.
 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Строки 54-57, не хватает одного знака. 

Rostislav_lv
Offline
Зарегистрирован: 12.02.2019

54-57 убрать пробел перед "("

Respekt
Offline
Зарегистрирован: 06.07.2019

Убрал пробелы, итог: error: expected ';' before 'analogRead'

Respekt
Offline
Зарегистрирован: 06.07.2019

= перед analogRead - так же ошибка.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Что такое VpinX1?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Respekt пишет:

= перед analogRead - так же ошибка.

Нужно читать и понимать текст ошибки. Хоть с гуглопереводчиком что ли! Если уж совсем плохо, копируйте его полностью сюда.

Кроме отсутствующих операторов присваивания, есть ещё две ошибки - необъявленная переменная Gamepad (надо объявить!) и какая-то нелепая запятая в строке 11 (убрать)

Это про компиляцию. Но работать всё равно не будет, т.к. переменные VpinX1 и подобные всё равно дальше нигде не используются.

Respekt
Offline
Зарегистрирован: 06.07.2019
const int pinButton2 = 2; // кнопка ручки 1
const int pinButton3 = 3; // кнопка ручки 2 
const int pinButton4 = 4; // кнопка ручки 3
const int pinButton5 = 5; // кнопка джойстика 1
const int pinButton6 = 6; // кнопка джойстика 2
const int pinX1 = A1; // Ось X джойстика 1
const int pinY1 = A0; // Ось Y джойстика 1
const int pinX2 = A3; // Ось X джойстика 2
const int pinY2 = A2; // Ось Y джойстика 2

void setup() {

  pinMode(pinButton2, INPUT_PULLUP);
  pinMode(pinButton3, INPUT_PULLUP);
  pinMode(pinButton4, INPUT_PULLUP);
  pinMode(pinButton5, INPUT_PULLUP);
  pinMode(pinButton6, INPUT_PULLUP);

  Gamepad.begin();
}

void loop() {

   if (!digitalRead(pinButton2))
   Gamepad.press(2);
  else
    Gamepad.release(2);
    
      if (!digitalRead(pinButton3))
    Gamepad.press(3);
  else
    Gamepad.release(3);
  
  if (!digitalRead(pinButton4))
    Gamepad.press(4);
  else
    Gamepad.release(4);

  if (!digitalRead(pinButton5))
    Gamepad.press(5);
  else
    Gamepad.release(5);

      if (!digitalRead(pinButton6))
    Gamepad.press(6);
  else
    Gamepad.release(6);
    
    analogRead(pinX1) ; // значение оси Х1
    analogRead(pinY1) ; // значение оси Y1
    analogRead(pinX2) ; // значение оси Х2
    analogRead(pinY2) ; // значение оси Y2
  Gamepad.write();
}

Компилируется без ошибок такой код. Но! В играх определяются толко кнопки, без джойстиков... осей не хватает, не определяются.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Вы же ни строчки здесь не понимаете? И кстати, Вы уверены, что этот проект, который Вы пытаетесь повторить, подразумевает какую-то работу с джойстиками?

Respekt
Offline
Зарегистрирован: 06.07.2019

Если бы я все понимал, я бы не создавал подобную тему. Я обратился за помощью, а не для выяснения понимаю-не понимаю. А для ответа на Ваш второй вопрос, скажу одно - все прописано в моем первом посте.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Respekt пишет:

Компилируется без ошибок такой код. Но!

- Неужели Вы такой идиот?
- Так точно, господин обер-лейтенант, такой!
                (Я. Гашек "Похождения бравого солдата Швейка")
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Respekt пишет:

Если бы я все понимал, я бы не создавал подобную тему. 

Есть разница "не всё понимать" и "ничего не понимать".

Когда ничего не понимаешь, надо не темы создавать, а читать учебники. Большой список есть в первой теме раздела "Песочница".

kalapanga
Offline
Зарегистрирован: 23.10.2016

Respekt пишет:

Если бы я все понимал, я бы не создавал подобную тему. Я обратился за помощью, а не для выяснения понимаю-не понимаю. А для ответа на Ваш второй вопрос, скажу одно - все прописано в моем первом посте.

Ну напишут Вам, что значения, которые Вы считываете с аналоговых входов, по-прежнему в скетче никак Вами не используются. Поможет? Дальше спросите, а как их использовать? А кто же Вас знает - Ваш скетч-то! Только Вы знаете, что он должен делать. Про переменную Gamepad спрашивать тоже похоже бесполезно.

Что это хоть получиться-то должно? Как всегда секретный проект или всё-таки есть какой-то первоисточник?