Я проследил вывод часов.. или я не правильно понял чтото..
при включении если было отключение
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
происходит коррекция времени. Как определяется потеря питания не смотрел.
Далее имеем безусловное получение информации с часов:
DateTime now = rtc.now();
secs = now.second();
mins = now.minute();
hrs = now.hour();
Вернее условно-безусловное. если USE_CLOCK равен 1.
кстати, в начале есть такая строка, которая определяет переменные минут, секунд и часов по умолчанию:
int8_t hrs = 10, mins = 25, secs;
Видим, что rtc.now() - это получение текущего времени из часов. (предполагаем, что автор, как и я, не знаком с используемой библиотекой часов)
Так же понимаем, что это время полученное в setup , а что бы получать верное время меняться оно должно где ? в LOOP конечно.
Далее я ищу где еще используется rtc.now(); и вижу что только 2-х местах в файле clock , в функции clockTicker и clockRoutine. причем clockTicker вызывается из clockRoutine при определенном условии. Именно в этой функции идет отрисовка часов на ленте функцией drawClock.
А поискав еще я нашел вторую функцию clockRoutine - пустую!
Теперь вопрос. Часы как отображаются на гирлянде ?
Функция clockRoutine вызывается в файле custom из функции customModes, причем в 3-х случаях, когда режим равен 2, 10 и 23, а сама customModes вызывается из функции customRoutine, которая есть в цикле loop.
Таким образом, при определенных условиях, работать должно!
Остается проверить как все работает , выводя отладочные сообщения в Serial. Я бы начал с определения того, какая функция из 2-х clockRoutine активна в прошивке. Если есть визуалкод или как он там, то с ним попроще, чем с ide - он умеет сворачивать условия. можно наглядно понять что не выполняется. Причем это условие задается через define т.к.
#else
void clockRoutine() {
return;
}
#endif
Писал специально подробно, показывая, что ничего сложного в раскопках кода нет, может кому пригодиться как урок
а вот похоже и разгадка:
#define MCU_TYPE 2 // микроконтроллер:
это из основного файла, а далее в тексте
#if (MCU_TYPE == 0 || MCU_TYPE == 1)
DateTime now = rtc.now();
secs = now.second();
mins = now.minute();
hrs = now.hour();
#endif