ArdunioJoystickLibrary ButtonState Preference
Здравствуйте! В настоящее время я использую ArduinoJoystickLibrary от MHeironimus, у меня есть трехкнопочная игровая панель, с которой у меня возникают проблемы. Моя кнопка на контакте 2 обычно включена, как я могу изменить это в коде, чтобы состояние обычно было выключено.
Я действительно понятия не имею, я просто изменил код джойстика клавиатуры + кнопки, чтобы заставить его работать должным образом, мне просто нужно иметь возможность контролировать начальное состояние каждой из кнопок, потому что иногда переключатели / кнопки могут быть перевернуты.
Сначала я подумал, что это можно сделать с помощью этой части:
// Last state of the button
int lastButtonState[3] = {0,0,0};
Где бы я просто изменил это {0,0,0}
нравится это {0,1,0}
тогда моя кнопка на контакте 3 будет нормально включена или HIGH
, Но нет. По сути, мне просто нужно иметь возможность контролировать каждое из трех состояний кнопок на лету, потому что я никогда не знаю, как будет реагировать переключатель / кнопка из моего огромного набора переключателей / кнопок.
Смотрите код ниже:
#include <Joystick.h>
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD,
3, 0, // Button Count, Hat Switch Count
false, false, false, // X and Y, but no Z Axis
false, false, false, // No Rx, Ry, or Rz
false, false, // No rudder or throttle
false, false, false); // No accelerator, brake, or steering
void setup() {
// Initialize Button Pins
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
// Initialize Joystick Library
Joystick.begin();
}
// Constant that maps the phyical pin to the joystick button.
const int pinToButtonMap = 2;
// Last state of the button
int lastButtonState[3] = {0,0,0};
void loop() {
// Read pin values
for (int index = 0; index < 3; index++)
{
int currentButtonState = !digitalRead(index + pinToButtonMap);
if (currentButtonState != lastButtonState[index])
{
if (index < 4) {
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
} else {
if (currentButtonState) {
Joystick.setButton(index, currentButtonState);
lastButtonState[index] = currentButtonState;
}
}
}
}
delay(10);
}
1 ответ
Определите, какие кнопки вы хотите щелкнуть:
bool flipButtons[3] = {false, true, false};
и затем используйте его, чтобы перевернуть, когда вы читаете состояние кнопки:
int currentButtonState = !digitalRead(index + pinToButtonMap) ^ flipButtons[index];