Пользователь
Регистрация: 07.12.2018
Город: Люберцы
Регион: 50, 90, 150
Машина: пятерочка
Сообщений: 36
|
Цитата:
Сообщение от Alladim
В общих чертах накидал с горем пополам вот такой скетч
Код HTML:
#include <Keypad.h> // подключаем нашу библиотеку
const byte ROWS = 5; //число строк у нашей клавиатуры
const byte COLS = 5; //число столбцов у нашей клавиатуры
char hexaKeys[ROWS][COLS] = {
{'1','2','3','4','5'}, // здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
{'6','7','8','9','0'},
{'A','B','C','D','E'},
{'F','G','H','I','J'},
{'K','L','M','N','O'}
};
byte rowPins[ROWS] = {2, 3, 4, 5, 6}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {7, 10, 16, 14, 15}; //к каким выводам подключаем управление столбцами
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
PCICR=1<<PCIE0;
PCMSK0=(1<<PCINT5)|(1<<PCINT4);
pinMode (8,INPUT_PULLUP);
pinMode (9,INPUT_PULLUP);
Keyboard.begin();
Serial.begin(9600);
}
// настройка функциональных клавиш
void loop(){
char customKey = customKeypad.getKey();
// назначение действий на кнопки
if (customKey == 'B') {
Keyboard.press(KEY_UP_ARROW);
delay (100);
Keyboard.releaseAll();
}
if (customKey == '2') {
Keyboard.press(KEY_DOWN_ARROW);
delay (100);
Keyboard.releaseAll();
}
if (customKey == 'O') {
Remote.previous();
delay (100);
Remote.clear();
}if (customKey == '7') {
Remote.next();
delay (100);
Remote.clear();
}if (customKey == '4') {
Remote.play_pause();
delay (100);
Remote.clear();
}if (customKey == '5') {
Remote.mute();
delay (100);
Remote.clear();
}if (customKey == '9') {
Keyboard.press(KEY_RETURN);
delay (100);
Keyboard.releaseAll();
Serial.println(customKey);
}
}
// часть кода для регулировки громкости энкодером
ISR (PCINT0_vect){
static byte old_n=PINB&B00110000;
byte new_n=PINB&B00110000;
if (old_n==32&&new_n==48||old_n==16&&new_n==0) {
Remote.increase();
delay(10);
Remote.clear();}
if (old_n==16&&new_n==48||old_n==32&&new_n==0) {
Remote.decrease();
delay(10);
Remote.clear();}
old_n= new_n;
}
Все кнопки работают, энкодер работает, нажатия на кнопки назначать получается. Но ! очень хочется реализовать управление с коротким/ длинным нажатием как в скетче Ув. lti1
http://pccar.ru/showpost.php?p=319975&postcount=307.
Ну ни как я не могу въехать, как переделать строки
Код HTML:
if(millis()-eventTime>10 && millis()-eventTime<499 && data>=165 && data<=185) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 7;
}
под матричную клавиатуру, в которой нету дребезга, не надо ничего сравнивать.
Очень прошу, на примере одной команды перемотки вперед, подскажите что нужно добавить в мой скетч, в том числе над циклом loop.
|
вы какую библиотеку Keypad используете ? у меня ваш код не проходит проверку
|