millis()
Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino.
Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.
Возможно, у вас возникают проблемы из-за переполнения, плюс вы переопределяйте
unsigned long currentMillis = millis(); // переменная для таймеров
переменную
currentMillis
с началом каждого прохода
void loop()
. Также советую вам пересмотреть
// включение света на улице от геркона и датчика света
if (digitalRead(gerkon) == 0 && digitalRead(dsveta) == 1) {
digitalWrite(rele_ul, LOW); // включить
rele_ul_on = true; // запомнить состояние
previousMillis_ul = currentMillis; // запомнить момент включения
}
, так как
previousMillis_ul = currentMillis; // запомнить момент включения
будет присваивать время старта
loop.