В этом скетче к текущему моменту времени добавляется 10 секунд (пока).
Существуют ли такие библиотеки, чтобы к текущему моменту добавлять любой временной отрезок (не только секунды) без подобных танцев?
Спасибо!
Спойлер
#include "iarduino_RTC.h"
// Подключение часов DS1302
#define CLK 8
#define DAT 9
#define RST 10
iarduino_RTC time (RTC_DS1302, RST, CLK, DAT);
struct tm // структура для работы с датой/временем
{
byte sec, minut, hour, day, mes, year;
};
tm getpoint; // текущий момент времени
tm modipoint; // модифицированный момент времени
byte arraym[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // количество дней в месяцах
void setup() {
Serial.begin(9600);
time.begin();
get_time2(getpoint); // текущее время с DS1302
modipoint = getpoint; // приготовить структуру modipoint к модификации
addsec2(modipoint); // добавить 10 секунд
out_time2(getpoint); // вывод исходного времени
out_time2(modipoint); // вывод модифицированного времени
}
void loop()
{
}
void get_time2(tm &tmr)
{
time.gettime();
tmr.hour = time.Hours;
tmr.minut = time.minutes;
tmr.sec = time.seconds;
tmr.day = time.day;
tmr.mes = time.month;
tmr.year = time.year;
}
void addsec2(tm &tma)
{
time.gettime();
tma.hour = time.Hours;
tma.minut = time.minutes;
tma.sec = time.seconds;
tma.day = time.day;
tma.mes = time.month;
tma.year = time.year;
tma.sec += 10;
if (tma.sec > 59)
{
tma.sec -= 60;
tma.minut++;
}
if (tma.minut > 59)
{
tma.minut -= 60;
tma.hour++;
}
if (tma.hour > 23)
{
tma.hour -= 24;
tma.day++;
}
if (tma.year % 4 == 0) arraym[2] = 29;
else arraym[2] = 28;
if (tma.day > arraym[tma.mes])
{
tma.day -= arraym[tma.mes];
tma.mes++;
}
if (tma.mes > 12)
{
tma.mes -= 12;
tma.year++;
}
}
void out_time2(tm tmout)
{
String toport = String(tmout.hour);
toport += " ";
toport += String(tmout.minut);
toport += " ";
toport += String(tmout.sec);
toport += " ";
toport += String(tmout.day);
toport += " ";
toport += String(tmout.mes);
toport += " ";
toport += String(tmout.year);
Serial.println(toport);
}