У меня есть Эскиз Arduino , который требует времени, и когда этот момент времени равен текущему времени, он устанавливает новый момент времени как timet + 2.
Например:
char* convert(char* x, String y)
{
int hour;
int minute;
sscanf(x, "%d:%d", &hour, &minute);
char buf[6];
if (y == "6")
{
if (hour > 17)
{
hour = (hour+6)%24;
snprintf(buf, 10, "%d:%d", hour, minute );
}
else
if (hour < 18)
{
//hour = hour + 6;
minute = (minute + 2);
snprintf(buf, 10, "%d:%d", hour, minute);
}
}
if (y == "12")
{
if (hour > 11)
{
hour = (hour+12)%24;
snprintf(buf, 10, "%d:%d", hour, minute );
}
else
if (hour < 12)
{
hour = hour + 12;
snprintf(buf, 10, "%d:%d", hour, minute);
}
}
if (y == "24")
{
hour = (hour+24)%24;
snprintf(buf, 10, "%d:%d", hour, minute );
}
return buf;
}
Эскиз начинается, например, в 1:00 утра. timet установлено на 1:02, в системное время 1:02 timet равно системному времени.
Мои петли выглядят так:
if (timet == currenttime)
{
timet = convert(timet)
}
Всякий раз, когда я проверяю значение timet, оно должно равняться 1:04, однако я получаю правильное значение при первом запуске после выполнения преобразования, однако каждый раз после этого мое значение timet пустое.
Я попытался изменить код вместо использования цикла if. Я запускаю функцию конвертирования только тогда, когда отправляю, например, через последовательный монитор. Это работает нормально и выдает правильное время после выполнения функции преобразования, поэтому я решил, что проблема в цикле if ...
Есть идеи?