Периодичность опроса клавиатуры

ratman
Offline
Зарегистрирован: 11.10.2015

А с какой периодичностью имеет смысл опрашивать клавиатуру? 250мс, 500мс? Обычный кейпад 3*4, библиотека тоже стандартная, v3.1.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Я делаю в любой доступный момент, но не чаще чем 1 отработка кнопки в нное время. Например

if(millis()-last_key>=500){
  if(!digitalRead(KEY_A)) doAction(1);
  if(!digitalRead(KEY_B)) doAction(2);
...
  if(!digitalRead(KEY_N)) doAction(x);
  last_key=millis();
}

 

ratman
Offline
Зарегистрирован: 11.10.2015

У меня в LOOP'е раз в 500мс дергается экран, кейпад каждые 200мс, остальное пока отдано на откуп самому процессу. Попробовал зажать кейпад до 450мс, неадекватно получается. Отклик невнятный, да и вообще, звуком дублировать ввод приходится. В родную библиотеку лезть не хочу. Попробовал написать врукопашную, ну есть 800 байт экономии программной памяти и 100 данных, но нет отсечки удержания. Если её писать, то сожру весь выигрыш. По этому родную и оставил.

Из кода показать, извините, пока нечего, один скелет с заглушками. Сейчас клавиатурный ввод отрабатываю.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ratman пишет:

А с какой периодичностью имеет смысл опрашивать клавиатуру? 250мс, 500мс? Обычный кейпад 3*4, библиотека тоже стандартная, v3.1.

С какой Вам надо, с такой и опрашивайте.

Например, TM1668 опрашивает каждые 8мс. Такие интервалы (6-15мс) хороши тем, что позволяют заодно и дребезг худо-бедно отсечь.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Самое сложное в клавиатуре, это определить как правильно ее организовать. Примитивно это каждая кнопка отдельно. Ну а самый высший уровень это организовать поток ввода , подобный Serial. Но тут с Serial не все умеют работать (ввод с Serial, а не отправка на печать). Я не вижу, по какому принципу строите программу. Но так же надо строить и клавиатуру.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

с Serial не все умеют работать (ввод с Serial, а не отправка на печать). 

А что с отрпакой на печать все умеют? :)))) Вроде Вы читаете наших уважаемых ньюби - должны бы знать :))