Заполнение бочки с водой

Тема в разделе "Arduino & Shields", создана пользователем vladdon, 22 апр 2015.

  1. avdeal

    avdeal Нуб

    Для пожарных целей 5400 приемлимо
    + датчики по 850. Но для теплицы? Дороговато.
     
  2. avdeal

    avdeal Нуб

    Ну если полив закончился, а до нижнего попловка еще пару сантиметров. Мой скетч не наполнит бочку к завтрашнему дню. Необходимо включить подачу через скажем час после опускания первого попловка.
     
  3. DetSimen

    DetSimen Guest

    вот так панятнее
     
  4. parovoZZ

    parovoZZ Гуру

    датчики в комплекте
     
  5. avdeal

    avdeal Нуб

    доработал свой скетч. добавил кнопку принудительного долива и таймер. на макетке всё работает. десятка строчек нет в скетче а для понятия логики потребовалось 2 вечера. а что в скетчах с сотнями строк? чет я засомневался в возможности самостоятельного изготовления полноценного контроллера для теплички.а говорят ардуина конструктор для детей.
    выложу скетч, может незнающим и пригодиться для решения разовой задачи
    Код (C++):
    boolean flag2=0;                  //переменная состояния клапана(крана) заполнения бочки
    int konc1=2;                      //верхний попловок в бочке подключен ко 2 пину
    int konc2=3;                      //нижний попловок в бочке подключен к 3 пину
    int doliv=4;                      //кнопка принудительного долива бочки
    int nasos=5;                      //клапан (насос)долива бочки
    unsigned long lasttime;           //переменная хранения времени срабатывания верхнего попловка
    unsigned long avtodoliv=5000;     //настраиваемое значение таймера долива бочки (сработал верх.попл. но не сработал ниж.попл.)

    void setup() {
    pinMode (konc1,INPUT);
    pinMode (konc2,INPUT);
    pinMode (doliv,INPUT);
    pinMode (nasos,OUTPUT);
    }

    void loop() {
    if (digitalRead(konc1)==1){
           if (digitalRead(konc2)==1 | digitalRead(doliv)==1 | millis()-lasttime > avtodoliv){
           flag2=1;
           }
    }
    else
    {flag2=0;
    lasttime=millis();
    }
    digitalWrite(nasos, flag2);
    }