ИМХО распаковка данных хромает.
Попробуйте так :
byte temp_sec_reg;
temp_sec_reg = Wire.read(); //читаем регистр модуля
//распаковываем регистр
second_ = ((temp_sec_reg & 0b01110000) >> 4) * 10 + (temp_sec_reg & 0b00001111);
ИМХО распаковка данных хромает.
Попробуйте так :
byte temp_sec_reg;
temp_sec_reg = Wire.read(); //читаем регистр модуля
//распаковываем регистр
second_ = ((temp_sec_reg & 0b01110000) >> 4) * 10 + (temp_sec_reg & 0b00001111);
Ds. Ваши проблемы связаны с тем, что Вы полностью игнорируете стадию проектирования.
Вы должны были понять, что на дисплее не хватит места, еще до того, как напишете первую строчку кода.
У него есть
byte bcdToDec(byte val) {
return ((val / 16 * 10) + (val % 16));
}
И даже в основном используется. Проблема в том, что он взял где-то код, но не понимает, что и как там делается
Если есть готовая библиотека с примерами - что мешало ее использовать?
Думаю он просто о ней не знал))
Тоже так думаю. ТС где-то нашел код для работы с RTC, типа продвинутый, т.е. без библиотеки - типа, тут мы можем сами делать так как надо, а не полагаться на возможно криво написанную библиотеку. Но продвинутый код предполагает и продвинутый уровень юзера ))