Доброго времени суток, решил перейти с arduino на stm32, и первое за что взялся сделать банальные часы.
Включил тактирование RTC, поставил вашу библиотеку segment_lcd. и пытаюсь вывести цифры часов:
HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
char str[DIGITS_NUM];
snprintf(str, DIGITS_NUM, "%d%d", sTime.Minutes, sTime.Seconds );
SEG_LCD_WriteString(str);
Проблема в том что sTime.Seconds имеет вид 1 2 3 4 (вместо 01 02 03 04) из за чего становился проблематично выводить их на прямую.
К тому же я не совсем понимаю как работает SEG_LCD_WriteString. Посоветуйте пожалуйста как привести строку к нужному виду, спасибо.
@nozyl доброго! Вот набросал, дисплея нет под рукой проверить, но думаю, все нормально будет:
HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN); char str[DIGITS_NUM + 2]; snprintf(str, DIGITS_NUM + 2, "%02d.%02d", sTime.Minutes, sTime.Seconds);
@aveal Большое спасибо, работает.%02d означает "форматировать целое число с двумя цифрами, оставляя его заполнением нулями"
я этого не знал, теперь осталась прикрепить кнопку для настройки часов. Опять же воспользуюсь вашей библиотекой button.
@nozyl button уже не моя, с сообщества ) Но там все четко, должно работать. Если что пиши, разберемся с проблемами 👍
Прикрепил кнопку вот таким образом, думаю что так не делать правильно, но она работает 😀. Не могу разобраться как в библиотеке segment_lcd заставить точку мигать.
if (BUTTON_GetAction(BUTTON_SETTINGS) == BUTTON_SHORT_PRESS)
{
sTime.Seconds++;
if(