Подскажите как организовать задержку внутри условия

Как заменить delay на задержку по таймеру? Таймер то постоянно идет а задержка нужна только при попадание в условие

‘’‘else {
// ошибок оборудования и сенсора нет можно работать с уровнями и включать насос
if (Lev_HW == true && Lev_LW == false) {
delay(5000); //заменить на нормальный код
digitalWrite (PUMP, LOW);
}
if (Lev_HW == false && Lev_LW == true) {
delay(5000); //заменить на нормальный код
digitalWrite (PUMP, HIGH);
}
}’‘’

Гуглеж blink without delay даст наводку. Тут на форуме тоже есть релевантная учебная тема. Поищите

Не. это я видел, много раз. тут вопросов нет, тут таймер сквозной, и мы от него пляшем.
В моем примере допустим таймер отсчитать должен 5 секунд только при срабатывании условия, которое может через сутки сработать. Да и переполнение таймера тоже как обработать стоит вопрос.

срабатывает условие если флаг таймера не выставлен выставляем флаг, запускаем таймер, если флаг выставлен проверяем срабатывание окончания таймера

1 лайк

Изучаем while(){}
Хотя это не будет отличаться от делита.

Что мешает считать миллис от любого события? Про переполнение не понял.
А задержка внутри условия может быть реализована конечным автоматом. Погуглите

ua6em спасибо!

В итоге посмотрел херню, которую Вы опубликовали. Тут только гильотина поможет.
Секретная программа? Которая начинается с
else {
ЗАЧЕМ Вам “Конечный автомат”?

mykaida там в коде ничего интересного
главное было
if (Lev_HW == true && Lev_LW == false) {
delay(5000); //заменить на нормальный код
digitalWrite (PUMP, LOW);
}
вопрос решен. Всем спасибо!