Создать функцию по включению реле на определенное время без delay.

Hubert_J_Farnsworth
Offline
Зарегистрирован: 13.11.2017

Добрый день! Нужно создать функцию, при вызове которой  на определенное время будет включаться реле, затем отключаться. Через delay это организовать проще простого, но delay мешает Ардуино обрабатывать данные, поскольку контроллер в это время ничего не делает, а тупо ждет.

Сейчас все реализовано данным образом. Подскажите, как это организовать с помощью millis() ?

void poliv()                                       //функция для управления насосом
{
digitalWrite(pins, HIGH);             // Включаем реле
delay(5000);                             // Ждем 5 секунд
digitalWrite(pins, LOW);             // Выключаем реле
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ищите пример "Blink без delay"

Hubert_J_Farnsworth
Offline
Зарегистрирован: 13.11.2017

sadman41 пишет:

Ищите пример "Blink без delay"

Читал. Если честно, как крутить код в лупе, чтобы мигать диодом примерно осмыслил, Но, пока не могу модифицировать его под свои нужды: чтобы включилось, скажем, на 5 секунд один раз и выключилось. Пожалуйста, помогите!

 

 

Morroc
Offline
Зарегистрирован: 24.10.2016

На мой взгляд точно так же. Надо включить - включаете и делаете currentMillis = millis(); а в условии по currentMillis выключаете, сбрасываете currentMillis, при currentMillis = 0 никак не реагируете. Можно для надежности еще проверить включено или выключено перед изменением состояния.
 

bwn
Offline
Зарегистрирован: 25.08.2014

Привет от Лешака и в сентябре две темы.