![]() |
Управление подрулевым джойстиком
Добрый день. Имеется код управления джойстиком:
#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пин. Вопрос в следующем: на крутелке постоянно замкнута одна из пар контактов, из-за этого код не хочет работать, если разомкнуть (физически), то код рабочий и все кнопки кроме крутелки работают. Помогите решить проблему. |
С помощью библиотеки поддерживающей матричную клавиатуру никак.
|
Цитата:
|
Написать собственное сканирование, ничего же сложного...
http://cxem.net/avto/electronics/4-91-2.jpg Бегающий 0 по горизонтали или вертикали, и читать входы. |
?
получилось решить вопрос?
|
Часовой пояс GMT +4, время: 16:58. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot