Добрый день , я начинающий сделал простые часы - nano + ds3231 + max7219 с семисегментным индикатором . Кто знает подскажите библиотеку для часового модуля с функцией blink . Blink нужна для "мигания" значений при установке часов / календаря кнопками . Сам искал что то ничего не мог найти .
а зачем для этого библиотека? Решается добавлением пары строчек. Вот один из вариантов для приведенного на видео TM1637: Код (C++): void displayData() { unsigned long currDisplayUpdateTime = millis(); static boolean flashFlag = true; if (millis() - lastUpdateTime > 1000) // обновляем дисплей раз в сек { if (flashFlag) Display.point(POINT_ON); else Display.point(POINT_OFF); // тут вывода данных Display.display(Digits); flashFlag = !flashFlag; lastUpdateTime = millis(); } }
Преимущество прерывания в том, что оно будет приходить ровно через секунду, а не как бог на душу положит, если какой-то кусок кода в delay висит, не? Именно для этого в DS3231 выведены чудные ноги: SQW и 32 kHz - емнип там можно настроить так, чтобы уровень на ноге менялся с частотой в 1 Гц - вот вам и управляющий сигнал для показа/скрытия точек.
Да , для разделительных точек между часами и минутами или что там между ними 1Гц как вариант пойдет, А если надо "мигать" с частотой менее 1Гц - например 500 или 200 миллисекунд ? Если я правильно понял то менее 1Гц с этих ног не снять . Мне надо "мигать" не точками а значениями часов / календаря при их установке кнопками.
Если в библе есть функция blink то все просто - при установке времени например часов в нужном месте кода вызываем ее - значения часов мигают - ставим часы - поставили - переходим к установке минут - снова вызвали blink и т .д.
lc.setDigit(0,7,hour/10,false); выводим десятки часов разряд 7 индикатора lc.setDigit(0,6,hour%10,false); выводим единицы часов разряд 6 lc.setChar(0,5,'-',false); сегмент G вместо точек между часами и минутами разряд 5 lc.setDigit(0,4,minute/10,false); выводим десятки минут разряд 4 lc.setDigit(0,3,minute%10,false); выводим единицы минут разряд 3 Вот например кусок кода вывода на индикатор часов и минут . Библиотека LedControl . Как сделать мигание например разрядов часов ?
Пробовал так . if( здесь условие которое верно например через каждые 200 миллисекунд ) { lc.setChar(0,7,' ',false); разряды индикатора 7 и 6 выключены lc.setChar(0,6,' ',false); } else { lc.setDigit(0,7,hour/10,false); разряды индикатора включены - выводим десятки и единицы часов lc.setDigit(0,6,hour%10,false); } Так работает , только код какой то получается , дебильный что ли ? И так для минут , дня недели , числа , месяца , года . Может есть еще варианты как сделать "мигание" ?