Как положено после мигания светодиодом, решил собрать часы
Наткнулся на Ваши уроки, очень полезно для начинающих. С выводом времени с DS1307 на индикатор все ОК. Но когда пытаюсь получить коды кнопок (у меня 4 кнопки), одновременно с выводом на дисплей, в мониторе тишина. Понимаю, что надо как-то разделить по времени опрос кнопок и вывод на индикатор, но не знаю КАК
Привожу пример. В мониторе определяются коды 1-й, 3-й и 4-й кнопки. На второй (или любые) разряд вывожу цифру 6.
Код: Выделить всё
#include <MsTimer2.h>
#include <LedDigitsKeys.h>
// тип индикатора 1; выводы разрядов 4, 14, 13, 10; выводы сегментов 11, 15, 6, 8, 9, 12, 5, 7
// вертикальные линии матрицы кнопок: 4, 14, 13, 10
// горизонтальные линии матрицы кнопок: 3; число подтверждений 6
LedDigitsKeys disp(1, 4, 14, 13, 10, 11, 15, 6, 8, 9, 12, 5, 7, 3, 255, 255, 255, 6);
// массив кодов кнопок
const byte codKeys[4] = {1, 2, 3, 4};
void setup() {
Serial.begin(9600);
MsTimer2::set(2, timerInterrupt); // прерывание по таймеру 2 мс
MsTimer2::start(); // разрешение прерывания
}
void loop() {
// вычисление кода нажатой кнопки
// перебор столбцов первой строки
for (int i = 0; i < 4; i++) {
if (disp.flagClick[i][0] == true) {
disp.flagClick[i][0] = 0;
Serial.println(codKeys[i]);
}
}
// вывод на индикатор
// в реальности вывожу часы и минуты
// для простоты - вывести цифру 6 во втором разряде
disp.tetradToSegCod(2, 6);
}
// обработчик прерывания 2 мс
void timerInterrupt() {
disp.regen(); // регенерация индикатора
}