13.11.2018, 22:13 | #1 |
Новый Пользователь
Регистрация: 19.10.2018
Возраст: 35
Регион: Беларусь
Сообщений: 2
|
Управление подрулевым джойстиком
Добрый день. Имеется код управления джойстиком:
#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пин. Вопрос в следующем: на крутелке постоянно замкнута одна из пар контактов, из-за этого код не хочет работать, если разомкнуть (физически), то код рабочий и все кнопки кроме крутелки работают. Помогите решить проблему. |
13.11.2018, 23:14 | #2 |
Гуру
Регистрация: 01.06.2013
Возраст: 58
Регион: Украина
Машина: Toyota Fortuner 4.0 / Chevrolet Bolt EV
Сообщений: 2,006
|
С помощью библиотеки поддерживающей матричную клавиатуру никак.
|
13.11.2018, 23:28 | #3 |
Новый Пользователь
Регистрация: 19.10.2018
Возраст: 35
Регион: Беларусь
Сообщений: 2
|
|
13.11.2018, 23:32 | #4 |
Гуру
Регистрация: 01.06.2013
Возраст: 58
Регион: Украина
Машина: Toyota Fortuner 4.0 / Chevrolet Bolt EV
Сообщений: 2,006
|
Написать собственное сканирование, ничего же сложного...
Бегающий 0 по горизонтали или вертикали, и читать входы. |
01.11.2019, 00:22 | #5 |
Пользователь
Регистрация: 07.12.2018
Город: Люберцы
Регион: 50, 90, 150
Машина: пятерочка
Сообщений: 36
|
?
получилось решить вопрос?
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|