PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Устройства ввода (http://pccar.ru/forumdisplay.php?f=12)
-   -   Управление подрулевым джойстиком (http://pccar.ru/showthread.php?t=27724)

maks_oteam 13.11.2018 22:13

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

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

YAM1966 13.11.2018 23:14

С помощью библиотеки поддерживающей матричную клавиатуру никак.

maks_oteam 13.11.2018 23:28

Цитата:

Сообщение от YAM1966 (Сообщение 406584)
С помощью библиотеки поддерживающей матричную клавиатуру никак.

Подскажите как лучше сделать

YAM1966 13.11.2018 23:32

Написать собственное сканирование, ничего же сложного...
http://cxem.net/avto/electronics/4-91-2.jpg
Бегающий 0 по горизонтали или вертикали, и читать входы.

архей 01.11.2019 00:22

?
 
получилось решить вопрос?


Часовой пояс GMT +4, время: 20:52.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot