Библиотека джойстика не читает потенциометр

arduino-leonardo windows joystick hid

Я использую библиотеку джойстиков для создания системы HOTAS для авиасимуляторов. Когда я загружаю тестовую программу, я могу зарегистрировать все смоделированные входы контроллера в Windows. Я также могу получить значение от моего ползункового потенциометра и прочитать его на последовательном мониторе. Но это не изменит значение входной функции, которой я ее передаю. Я предполагаю, что это неправильный тип целого числа, но я не очень разбираюсь в типах int. Joystick.setThrottle имеет параметр int32_t. Windows считывает значение дроссельной заслонки на уровне 49 % при подключении.

Что я пробовал:

изменение диапазона (по умолчанию от 0 до 1023, я хочу от 0 до 255)

изменение типа throttle_ на int, unsigned int и int_32_t

изменение initAutoSendState

использование номера контакта вместо макро-дросселя передача throttle_ непосредственно в Joystick.setThrottle без функции updateThrottle

У меня есть некоторый опыт программирования в старшей школе, поэтому я просто пробовал разные подходы, но я новичок в Arduino.

#include "Joystick.h"
//определяем входные контакты
#define throttle A0
//включаем скрытое, тип, количество кнопок, количество шляп, ось X, ось Y, ось Z, ось Rx, ось Ry, ось Rz, руль направления, газ, акселератор, тормоз, рулевое управление
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_JOYSTICK, 0, 0, false, false, false, false, false, false, false, true, false, false, false);
const bool initAutoSendState = true;

int32_t throttle_ = 0;
void updateThrottle (int32_t value)
{
Joystick.setThrottle(value);
}
void setup() {
  // поместите сюда свой код установки для однократного запуска:

Serial.begin(9600);
pinMode(throttle, INPUT_PULLUP);
Joystick.setThrottleRange(0, 255);

}
void loop() {
  // поместите сюда свой основной код для многократного запуска:

  throttle_ = analogRead(throttle);
  throttle_ = map(throttle_, 0, 1023, 0,  255);
updateThrottle(throttle_);
Serial.print(throttle_);
Serial.print("\n");

}

, 👍-1


1 ответ


Лучший ответ:

0

Просмотр примеров показал, что мне нужно было добавить Joystick.begin(); в настройку

,