В наличии arduino nano, реле и датчик влажности DHT11. Задача собрать реле влажности в ванну. Логика следующая: в ванне установлен проходной выключатель, человек включив его включает свет и отключает ардуину, выйдя из ванны выключает свет и влючает ардуину и привязаный к ней через реле вентилятор, например на 10 минут. Затем ардуина приостанавливает свою работу до момента когда либо снова включат свет либо влажность поднимется до 70%. По отдельности реле и датчик влажности работают. Проблема в то, что когда они работают вместе, после старта ардуины и первого срабатывания реле по задержке, реле выключается(как и нужно по алгоритму) и через небольшой промежуток времени включается само, хотя нужный уровень влажности не достигнут. После этого реле не выключается и на изменение влажности не реагирует. Подскажите, чем это может быть вызвано? Код (C++): #include "DHT.h" #define DHTPIN 6 #define DHTTYPE DHT11 int Relay = 8; DHT dht(DHTPIN, DHTTYPE); void setup() { pinMode(Relay, OUTPUT); digitalWrite(Relay, LOW); delay(60000); digitalWrite(Relay, HIGH); dht.begin(); } void loop() { delay(10000); float h = dht.readHumidity(); if (h > 70) { digitalWrite(Relay, HIGH); delay(30000); } else { digitalWrite(Relay, LOW); } }
Во первых у вас в сетапе перепутанны включение и выключение реле, по идее нужно сначала включить, а затем выключить. Второе, как вы контролируете влажность? Есть мысль, что датчик тупо глючит. Смотрите значения в терминале, так будет проще понять, что именно происходит.
А вот так? Код (C++): #include "DHT.h" #define DHTPIN 6 #define DHTTYPE DHT11 int Relay = 8; //реле пинна 8 ноге DHT dht(DHTPIN, DHTTYPE); void setup() { pinMode(Relay, OUTPUT); //на выход DitalWrite(Relay, LOW); //и выключен } void loop() { dht.begin(); //запускаем датчик float h = dht.readHumidity(); //если влажность больше 70 if (h > 70) { digitalWrite(Relay, HIGH); //включаем вытяжку delay(300); } else { digitalWrite(Relay, LOW); //иначе выключаем } }