Помогите со скетчем поливки .

Тема в разделе "Закажу проект", создана пользователем Atmega, 3 июн 2016.

  1. Atmega

    Atmega Нерд

    Вот собственно скетч поливки , он каждые 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);

    //ждем время
    }
     
  2. joman

    joman Гик

    Чтобы отключать питание, Вам надо повесить питание датчика на ногу ардуины (либо через транзистор, если мощности ноги не хватит) и программой включать его перед измерением и выключать после.
     
  3. Atmega

    Atmega Нерд

    Да , я знаю что через транзистор , Вся проблема в коде .
     
  4. joman

    joman Гик

    Никакой проблемы в коде (Ваш код я оставил без изменения, только добавил включение датчика перед опросом и его выключение после):
    Как видно, питание вешать на 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);
      //ждем время
    }
     
  5. Atmega

    Atmega Нерд

    Проверил , не работает . Подается питание только при включении на 1 сек , через 3 минуты не подается .
     
  6. Vad33

    Vad33 Капитан-оригинал

    Код рабочий, наверно схема не рабочая.
     
  7. Atmega

    Atmega Нерд

    Если есть возможность , проерьте пожалуйста , очень нужно )))
     
  8. az3749

    az3749 Нерд

    А помпа на том же питании сидит что и дуня?
     
  9. Vad33

    Vad33 Капитан-оригинал

    Я бы проверил, только как?