Показать сообщение отдельно
Старый 13.11.2018, 22:13   #1
maks_oteam
Новый Пользователь
 
Регистрация: 19.10.2018
Возраст: 34
Регион: Беларусь
Сообщений: 2
maks_oteam is on a distinguished road
По умолчанию Управление подрулевым джойстиком

Добрый день. Имеется код управления джойстиком:

#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пин.
Вопрос в следующем: на крутелке постоянно замкнута одна из пар контактов, из-за этого код не хочет работать, если разомкнуть (физически), то код рабочий и все кнопки кроме крутелки работают.
Помогите решить проблему.
maks_oteam вне форума   Ответить с цитированием