#1 2019-07-11 20:25:42

ckret
Участник
Зарегистрирован: 2016-03-28
Сообщений: 14

Часы, анимация настройки.

Добрый вечер, подскажите, как правильно сформировать sprintf для анимации настройки времени, когда мигают часы. Спасибо!

if(flashShowTimer + 1000 <= millis()){
     flashShow = !flashShow;
     flashShowTimer = millis();

      sprintf(szMesg, "%02d%c%02d", (flashShow ? hour() : NULL),":" , minute());
     }     
  

Редактировался ckret (2019-07-11 20:40:59)

#2 2019-07-12 07:12:50

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 586

Re: Часы, анимация настройки.

if(flashShowTimer + 1000 <= millis()) - не корректная запись.

if(millis() - flashShowTimer >= 1000) - так правильно.

#3 2019-07-12 07:16:53

Watchdog
Гость

Re: Часы, анимация настройки.

ckret пишет:

Добрый вечер, подскажите, как правильно сформировать sprintf для анимации настройки времени, когда мигают часы. Спасибо!

if(flashShowTimer + 1000 <= millis()){
     flashShow = !flashShow;
     flashShowTimer = millis();

      sprintf(szMesg, "%02d%c%02d", (flashShow ? hour() : NULL),":" , minute());
     }     
  

NULL это указатель на "ничего", с условным численным значеним адреса, а не переменная. Обычно равен нулю. И оператор  сравнения наоборот. Чтобы мигали, нужно поочерёдно, через интервал времени, писать то пробелы то значения. Если работает, как нужно - можно считать, что правильно. А у вас всё неправильно.

#4 2019-07-12 09:04:00

ckret
Участник
Зарегистрирован: 2016-03-28
Сообщений: 14

Re: Часы, анимация настройки.

Спасибо за информацию по NULL, когда самоучка это похоже на дом с пропущенными кирпичами.
Сама загвоздка возникла с sprintf, пробел это переменная String (s), а числовая (d). Библиотека возвращает  hour() как char вроде.
И если числовая переменная пустая при %02d , то вместо пустоты имеем ноль, если сделать записть %2d , то теряется задумка в добавление ноля в числах меньше 10.
Если кто то может помочь привести запись в божеский вид, буду очень благодарен.

#5 2019-07-12 10:36:47

Watchdog
Гость

Re: Часы, анимация настройки.

Здесь больше информации: https://sharpened.ucoz.ru/lib/polnyj_spravochnik_po_c-gerbert_shildt-2006.pdf . Но это не исключает изучения образовательной литературы по программированию. Функция sprintf(.) не позволяет выводить все пробелы вместо нуля, один ноль всё равно останется. Читайте, учитесь, подробно разбирайте тексты примеров и всё получится.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела