Библиотека RTClib вторая, вторая

Я использую RTClib для своего модуля DS3231, проблема в том, что библиотека отображает секунды без нуля: 22:1:1 и когда я печатаю время на моем ЖК-дисплее 16x2, время отображается следующим образом:

22:22:59

22:23:19

22:23:29

...

22:23:59

22:23:10

22:23:11

второе число секунд не очищается. я знаю, что одним из решений этого является использование функции lcd.clear() для обновления ЖК-дисплея в каждом цикле, но есть ли другой способ очистить это второе число или сделать что-то, чтобы библиотека показывала ноль за секунду?

, 👍0

Обсуждение

Какое отношение високосные секунды имеют к чему-либо?, @Majenko

@Majenko извините, возникло недоразумение, обновил вопрос., @ElectronSurf

Ваша проблема в том, что вы печатаете 1. Люди не делают этого для времени. Вы используете 01., @Majenko

как использовать "01"? есть ли настройка, которую я должен изменить?, @ElectronSurf

Если секунд меньше десяти, выведите 0. Затем выведите секунды. Это так просто. Библиотека тут ни при чем. Важно то, что вы делаете с числом в коде., @Majenko

если вы опубликуете это как ответ, я выберу его как правильный ответ. lcd.print(now.second());., @ElectronSurf


1 ответ


Лучший ответ:

1

Правильный формат времени лежит на вас, а не на библиотеке. Библиотека просто дает вам номер. Если вам нужен начальный нуль, то вы можете указать этот начальный ноль.

Например:

if (now.seconds() < 10) {
    lcd.print("0");
}
lcd.print(now.seconds());

Или:

char timestr[9];
snprintf(timestr, 9, "%02d:%02d:%02d", now.hours(), now.seconds(), now.minutes());
lcd.print(timestr);
,

что такое snprintf? это дает мне эту ошибку: ожидаемый конструктор, деструктор или преобразование типа перед '(' token, @ElectronSurf

@newbie: Это [очень стандартная функция libc](https://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#ga77070c245d4ca4f7ec7d7144260fb875)., @Edgar Bonet

@EdgarBonet, извини, но в чем ошибка?, @ElectronSurf

Вы использовали код *внутри функции* или просто выгрузили его в глобальную область?, @Majenko

я виновен в том, что сбросил его в глобальную область... я знаю, что сейчас у меня головная боль, но не могли бы вы объяснить немного больше? @Маженко, @ElectronSurf

Поместите его в цикл(), где вы хотите отобразить время., @Majenko

@Majenko спасибо., @ElectronSurf