Как сложить время. Ардуино

Timur_Rumit
Offline
Зарегистрирован: 31.07.2019

Вопрос по ардуино(c++). Имеется модуль часов реального времени zs-042(DS3231). на его базе хочу сделать таймер(с паузой). Хочу брать время с модуля и прибавлять к нему время таймера и сохранять в переменную. Если время с модуля совпадают с временем в переменной то время истекло. Но как к времени с модуля прибавить время таймера(полтора часа или 90 минут)? Казалось всё просто берём часы и минуты к часам прибавляем 1, а к минутам 30. Но это не работает если времени например 18:50.Тогда получается 19:80, а не нужные 20:20.   



Есть варианты как сложить время? 

Если есть пишите в ответы!

Feofan
Offline
Зарегистрирован: 28.05.2017
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Разные!!! 

да ну? в идеале жеж надо просто создать переменную ТИПА time

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Тип переменной time не встречал (укажите где почитать), наверное unsigned long в помощь придёт. 

И как вы время измеряете? В секундах или микросекундах? Без скетча не понятно...

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

19:80

80 > 59 к часам +1 (получаем 20), 80 вычитаем 60

20 > 59 нет - значит 20 верное число минут

20:20

Гриша
Offline
Зарегистрирован: 27.04.2014

Timur_Rumit пишет:

 Казалось всё просто берём часы и минуты к часам прибавляем 1, а к минутам 30. Но это не работает если времени например 18:50.Тогда получается 19:80, а не нужные 20:20.   



Есть варианты как сложить время? 

ИМХО. Вы или боитесь лишнюю букву в коде написать (ищите щаблон) или у Вас туго с логикой. Задача немногим сложнее, чем когда учат первоклашек переходу через десяток. Выше вам целых 2 пути показали. И не стесняйтесь, спрашивайте... может и посмеемся, но в нужную сторону пнем, а там сами решайте - лететь или не лететь.  

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

если секунды не нужны, используй свёртку времени  60*часы+минуты.  Потом прибавляй к получившемуся нужное количество минут и разворачивай взат 

часы = результат / 60

минуты = результат % 60

как отслеживать изменение суток сама угадаешь7

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Timur_Rumit пишет:
Казалось всё просто берём часы и минуты к часам прибавляем 1, а к минутам 30. Но это не работает если времени например 18:50.

Это-то не проблема, гораздо хуже, когда при сложении происходит переход через границу месяца и нужно понимать сколько в нём дней.

Самый просто вариант Вам уже сказали, преобразуете своё время и интервал, который нужно прибавить  в unix-time, складываете как обычные числа, а результат преобразуете обратно. Благо для преобразований есть готовые функции и самому писать ничего не надо.

В ардуино Вам доустпен файл <time.h> - вот это как раз оно самое.

Timur_Rumit
Offline
Зарегистрирован: 31.07.2019

спасибо всем!