Вот собственно скетч поливки , он каждые 3 минуты меряет влажность и если она ниже 500 , то включается помпа на 100 секунд . Проблема в том , что я не могу сделать так (уже пробовал делать , безрезультатно), чтоб датчик влажности почвы включался только на время измерения.Помогите пожалуйста ! int dat1=A1; int POROG = 500; //порог сухости почвы void setup() { pinMode(dat1, INPUT); pinMode(A5,OUTPUT); } void loop() { int x =analogRead(dat1); if (x<POROG) { // если влажность на каком-то из датчиков ниже нужной, digitalWrite(A5,HIGH); delay(100000); digitalWrite(A5,LOW); } else { analogWrite(A5,LOW); } delay(180000); //ждем время }
Чтобы отключать питание, Вам надо повесить питание датчика на ногу ардуины (либо через транзистор, если мощности ноги не хватит) и программой включать его перед измерением и выключать после.
Никакой проблемы в коде (Ваш код я оставил без изменения, только добавил включение датчика перед опросом и его выключение после): Как видно, питание вешать на 10 ногу, либо изменить в скетче. Код (C++): #define PIN_PITANIE 10 int dat1=A1; int POROG = 500; //порог сухости почвы void setup() { pinMode(dat1, INPUT); pinMode(A5,OUTPUT); pinMode(PIN_PITANIE,OUTPUT); } void loop() { digitalWrite(PIN_PITANIE,HIGH); // Включаем и ждем секунду delay(1000); int x =analogRead(dat1); // Выключаем digitalWrite(PIN_PITANIE,LOW); if (x<POROG){ // если влажность на каком-то из датчиков ниже нужной digitalWrite(A5,HIGH); delay(100000); digitalWrite(A5,LOW); } else { analogWrite(A5,LOW); } delay(180000); //ждем время }
Проверил , не работает . Подается питание только при включении на 1 сек , через 3 минуты не подается .