Помогите избавиться от delay()
- Войдите на сайт для отправки комментариев
Сб, 27/02/2016 - 07:01
Вопрос собственно вот в чем. Вот кусок самодельной функции
if (n == 5) { digitalWrite(oneLamp, HIGH); delay(1000); digitalWrite(twoLamps, HIGH); oneLampStat = 1; twoLampsStat = 1; threeLampsStat = 1; delay(1000); }
Не получается это всё заменить на пример с previousMillis. Если сделать так, реле включаются одновременно
if (n == 5) { digitalWrite(oneLamp, HIGH); if (millis() - previousMillis > 1000) { previousMillis = millis(); digitalWrite(twoLamps, HIGH); oneLampStat = 1; twoLampsStat = 1; threeLampsStat = 1; } }
Как сделать эту задержку? :(
Тут надо понимать, нужно ли включать второе реле, если за время задержки переменная "n" станет неровна пяти.
Да нет, мне надо чтобы реле включались с задержкой в одну секунду, а не обе сразу.
С delay всё работает, а переделать под millis не выходит..
Конечный автомат тебе в помощь
А я вижу это так.
Сначала объявить глобальную переменную.
Работоспособность не проверялась.
Я бы шотот типа такого делал.
Спасибо за ответы. Попытаюсь прикрутить какой нибудь из вариантов :)
Наверное это надо было сделать сразу.. Вот весь код, с delay.
А может их просто удалить? Я так и не понял их сокральное значение. Включить лампу, подожать 1 сек и продолжить обработку данных - зачем ждать неясно.
Вот с тем что между двумя включениями - надо мудрить. Обработчик ламп нужно сделать в общий цикл.
Если 2 реле включаются/выключаются одновременно, ардуинка начинает глючить. Такое ощущение что нехватает тока чтобы ими дергать. С задержкой же всё работает как часы.
З.Ы. Реле находится где то на расстоянии 8 метров от ардуины :)
Команда включения у вас управляет максимум 2 пинами. Нужно завести 3 глобальных переменных - две для номера пинов и 3 для их состояния.
В общий цикл сунуть это:
код включения сделать таким
С минимумом изменений, как-то так.
Пожалуйста помогите избавиться от delay, никак не могу с ним разобраться, устройство должно поддерживать влажность в помещении, датчик должен опрашиваться каждые 15 секунд и в зависимости от показаний выполняться действия. с возможностью установки определенной влажности. вот код с delay.
float Y=50.00;