Работа с таймером
- Войдите на сайт для отправки комментариев
Вс, 29/01/2017 - 15:41
Здравствуйте.
не пойму как сделать включение вентилятора на определенное время после выключения света в туалете, а именно как привязаться к millis()
Освоил такой таймер он срабатывает один раз в в какойто период времени (в данном случае раз в 2 секунды)
if (millis() - timerDHT > 2000 ) // раз в 2 секунды считываем показания датчика DHT11 { Temperatura1 = dht.readTemperature(); // Получаем данный о температуре Vlajnost1 = dht.readHumidity(); // Получаем данный о влажности timerDHT = millis(); // Сбрасываем таймер для нового отсчета }
код управления вентилятором и светом в туалете (при выключеном свете ВСЕ время работает вентилятор)
// Управление реле света в туалете if (digitalRead(SensBOTTON2Pin) == LOW) // если сенсорный выключатель включен { digitalWrite(ReleLIGHT2Pin, HIGH); // включаем реле управляющее светом } else // если сенсорный выключатель выключен { digitalWrite(ReleLIGHT2Pin, LOW); // выключаем реле управляющее светом } // Управление реле вентилятора в туалете if (digitalRead(ReleLIGHT2Pin) == LOW) // если выключаем реле управляющее светом { digitalWrite(ReleFUN2Pin, HIGH); // включаем реле управляющее вентилятором } else { digitalWrite(ReleFUN2Pin, LOW); // выключаем реле управляющее вентилятором }
может на if...else это сделать нереально? и надо использовать другие операторы управления.
может както отслеживать изменение состояния сенсорной кнопки? пробовал такое условие:
if (digitalRead(ReleLIGHT2Pin) == !digitalRead(ReleLIGHT2Pin) && digitalRead(ReleLIGHT2Pin) == LOW) { digitalWrite(ReleFUN2Pin, HIGH); // включаем реле управляющее вентилятором timerFUN2 = millis(); // запускаем таймер во время выключения реле света } if (if (digitalRead(ReleLIGHT2Pin) == LOW && millis() - timerFUN2 > 30000) { digitalWrite(ReleFUN2Pin, LOW); // выключаем реле управляющее вентилятором после 30 секунд работы }
но тоже не хочет правильно реагировать.
может на if...else это сделать нереально? и надо использовать другие операторы управления.
Какие бы Вы предложили?
Решил свою задачу так:
назначил переменную текушего состояния реле света перед условием
в самом конце цикла назначил переменную текушего состояния реле света
в первом условии сравниваю, что они не должны быть равны и состояние реле управления света - выключено
внутри код включаю реле вентилятора
и сбрасываю таймер для начала осчтета.
во втором условии слежу за временем если оно превысит заданное
выключаю реле управленияя вентилятором