Давай я напишу. Помню местные ребята мне так же разжовывали)) Приходится возвращать.
У контроллера есть внутренний таймер работы.
Он считает сколько прошло миллисекунд с момента старта.
Это очень удобная вещь чтобы что то делать с интервалами или в определенное время.
Получить время можно с помощью функции millis();
Например
Serial.print("Millis:");
Serial.println(millis());
delay(200);
Увидишь вывод времени в миллисекундах каждые 200мс
Чтоб что то делать с интервалом нужно.
Кудато записать время. Например long time_1 = 0;
Узнать текущее время, вычесть из него время когда мы последний раз сохраняли время( изначально это 0 long time_1 = 0
и сравнить с интервалом.
И так.
if(millis() - time_1 > 5000){// Если текущее время - ранее сохраненное время > 5сек
time_1 = millis();// сохраняем новое время в переменную
// что то делаем
}
Первый раз сработает когда millis() будет больше 5000 т.к time_1 = 0;
Второе срабатывание когда будет больше 10000 и т.д
В итоге каждые 5000мс будет один раз выполнятся условие.
Далее можно использовать millis() разнообразно. Например произошло какое то событие.
Сохраняем в переменную время time_2= millis();
И нам надо через 2 минуты что то сделать. Например мы включили насос и надо его выключить.
if(millis() - time_2 > 120000){
//выключаем насос
}
Можно выводить время работы в виде часов
void TimePrint()
{
int time=millis()/1000;
if (time/60/60<10) { Serial.print ("0"); }
Serial.print (time/60/60);
Serial.print (":");
if (time/60%60<10) { Serial.print ("0"); }
Serial.print ((time/60)%60);
Serial.print (":");
if (time%60<10) { Serial.print ("0"); }
Serial.println (time%60);
}
Значения long могут переполнятся но вряд ли вас это побеспокоит в ближайшие пол года т.к ваше устройство без перезагрузки вряд ли проживет и пару дней)))