Управление подрулевым джойстиком
Добрый день. Имеется код управления джойстиком:
#include <Keypad.h>
const byte ROWS = 3; //four rows
const byte COLS = 4; //four columns
char hexaKeys[ROWS][COLS] = {
{'6','x','4','a'},
{'8','1','2','b'},
{'7','3','5','c'}
};
byte colPins[COLS] = {
6, 5, 4, 3}; //connect to the row pinouts of the keypad
byte rowPins[ROWS] = {
9, 8, 7}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop()
{
char key = customKeypad.getKey();
if (key != NO_KEY)
{
Serial.println(key);
}
char LastJoystickKey;
switch(key){
case 'a':
if(LastJoystickKey=='b'){
Remote.next();
delay(200);
Remote.clear();
}
if(LastJoystickKey=='c'){
Remote.previous();
delay(200);
Remote.clear();
}
break;
case 'b':
if(LastJoystickKey=='a'){
Remote.previous();
delay(200);
Remote.clear();
}
if(LastJoystickKey=='c'){
Remote.next();
delay(200);
Remote.clear();
}
break;
case 'c':
if(LastJoystickKey=='a'){
Remote.next();
delay(200);
Remote.clear();
}
if(LastJoystickKey=='b'){
Remote.previous();
delay(200);
Remote.clear();
}
break;
default:{
}
if(key=='a'||key=='b'||key=='c'){
LastJoystickKey=key;
}
}
if (key == '2'){
Remote.play_pause();
delay(10);
Remote.clear();
}
if (key == '3'){
Remote.decrease();
delay(10);
Remote.clear();
}
if (key == '1'){
Remote.increase();
delay(10);
Remote.clear();
}
}
На джойстике имеется крутелка (не энкодер), которая работает по принципу замыкания контактов как и кнопка. Крутелка имеет 3 положения (3 пары замыкания контактов). Замыкания происходят по схеме 4пин+7пин, 4пин+8пин, 4пин+9пин.
Вопрос в следующем: на крутелке постоянно замкнута одна из пар контактов, из-за этого код не хочет работать, если разомкнуть (физически), то код рабочий и все кнопки кроме крутелки работают.
Помогите решить проблему.
|