установка времени в переменные вида "00" вместо "0"

Тема в разделе "Arduino & Shields", создана пользователем Толик Иванов, 7 дек 2015.

  1. Толик Иванов

    Толик Иванов Administrator Администратор

    P51207-113612.jpg в моем проекте время с RTC модуля отображается в формате 00:00, как мне сделать так чтоб время будильника, который я выставляю тоже отображалось в формате 00:00. к примеру сейчас я выставляю минуты в формате "1,2,3,4...10", а необходимо чтоб они на LCD дисплее отображались в формате "01,02,03,04...10"
    в данном случае будильник установлен на 8 часов 5 минут
     
    Последнее редактирование: 7 дек 2015
  2. vvr

    vvr Инженерище

    пропишите условие - если часы и мин меньше 10 то перед значением выводится ноль
     
  3. Толик Иванов

    Толик Иванов Administrator Администратор

    а как его вывести?
    сейчас минуты выводятся таким образом
    lcd.print(m);
    где m это переменная с минутами
    if (m<10){
    lcd.print("0"m);
    }
    не работает...
     
  4. vvr

    vvr Инженерище

    укажи сначала курсор для нуля, выведи ноль
    потом курсор для минут и выводи минуты
     
  5. Толик Иванов

    Толик Иванов Administrator Администратор

    а через тип переменной это никак сделать нельзя, чтоб переменная m сразу принимала вид 05 вместо 5?
     
  6. vvr

    vvr Инженерище

    а где ты такие переменные видел
     
  7. Толик Иванов

    Толик Иванов Administrator Администратор

    да не видел, просто если я с часов запрашиваю минуты то приходит число 1, а если с подключенной их библиотекой запросить time то приходит 10:01, вот и начал думать что там какой-то тип записи применен, какой нибудь двоичный например... я хз, думал может это тип str вроде строки выводит...
     
  8. Толик Иванов

    Толик Иванов Administrator Администратор

    ну если другого способа не найду то действительно пропишу условие и буду тупо добавлять ноль а потом переменную
     
  9. Sindbad

    Sindbad Гик

    А посмотреть как это сделано в библиотеке таймера и сделать аналогично только для минут?

    В библиотеке таймера от Амперки, например, так:
    (фрагмент функции возвращающей время в виде строки)
    .........
    char buff[8];
    .........
    if (_minute < 10)
    buff[3] = '0';
    else
    buff[3] = char((_minute / 10) + 48);
    buff[4] = char((_minute % 10) + 48);
    .........
     
  10. Код (C++):
        lcd.setCursor(0, 0);
         if (hour < 10) lcd.print("0");
        lcd.print(hour);
        lcd.print(":");
         if (minute < 10) lcd.print("0");
        lcd.print(minute);
     
    Толик Иванов нравится это.
  11. Толик Иванов

    Толик Иванов Administrator Администратор

    спасибо, в итоге так и сделал
     
  12. ANV

    ANV Гуру

  13. Толик Иванов

    Толик Иванов Administrator Администратор

  14. ANV

    ANV Гуру

    И, кстати, обратите внимание что можно буффер подготовить за раз для всей строки со временем:
    Код (C++):
    sprintf(buffer, "%02d:%02d:%02d\n", hour, minutes, seconds);
     
    Толик Иванов нравится это.
  15. Толик Иванов

    Толик Иванов Administrator Администратор

    Спасибо:)