Показать сообщение отдельно
Старый 01.11.2019, 00:19   #888
архей
Пользователь
 
Регистрация: 07.12.2018
Город: Люберцы
Регион: 50, 90, 150
Машина: пятерочка
Сообщений: 36
архей is on a distinguished road
По умолчанию

Цитата:
Сообщение от 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 используете ? у меня ваш код не проходит проверку
архей вне форума   Ответить с цитированием