6 янв. 2017 г.

водный чипъ

В очередной раз переколбасил управление водяной башкой Autortol, на этот раз используя Arduino Nano.
Программку переписал, чтобы по кнопке текущий цикл прерывался.
Да и просто переписал, пограмотнее - всего 1368 байт получилось, а под переменные и вовсе 9 байт.


#define OPTIC 8
#define RELAY 9
#define BTN   10

boolean btnPressed()
{
  int buttonState = digitalRead(BTN);
  if(buttonState == 1 )
    return(true);
  else
    return(false);
}

void waitFor(int secdel)
{
  int seconds=secdel*600;
  int runsec=0;
    while (runsec<seconds)
    {
    if(btnPressed())
      break;
    delay(100);
    runsec++;
    }
}

void cycle(int duration)
{
 digitalWrite(RELAY,1);
 waitlabel();
 waitsolid();
 digitalWrite(RELAY,0);
 waitFor(duration);
}

void waitlabel() //wait for label
{
 while(!opticState())
  delay(100);
}

void waitsolid()
{
 while (opticState()) //until label is visible
  delay(100);
}

boolean opticState() //true=label false=solid
 {
  int inputState;
  inputState = digitalRead(OPTIC);
  if (inputState==1)
   return(true);
  else
   return(false);
 }

void regen()
{
cycle(10); //backwash
cycle(5); //regenerant draw
cycle(3); //slow rinse
cycle(2); //system pause to resurpresse tank
cycle(1); //KMnO4 inject
cycle(15); //fast rinse
cycle(3); //backwash
cycle(3); //fast rinse
//final aproach
digitalWrite(RELAY,1);
delay(6400); //roll to zero position
digitalWrite(RELAY,0);
} //regen

void setup()
{
 pinMode(BTN, INPUT);
 pinMode(OPTIC, INPUT);
 pinMode(RELAY, OUTPUT);
}

void loop()
{
 if(btnPressed())
  regen();
 delay(500);
}

7 комментариев:

  1. Ответы
    1. Я тут постепенно к Малинкиному GPIO подбираюсь, вот где сила. Особенно если их с Ардуинами вместе сопрячь.

      Удалить
  2. Дмитрий, с удовольствием почитал ваш блог.
    Почему заглох вариант контроллера на ЕСП?

    ОтветитьУдалить
    Ответы
    1. Я начал дрейфовать в сторону минимализма.
      Да и пока в семье добавился мелкий - элементарно не до изысканий.

      Удалить
    2. Понятно. Дети - это святое.
      А насчет минимализма - так проще ESP может быть только диод.
      Мне полноценный контроллер на ЕСП некогда ваять, но модуль для дистанционного запуска умягчителя я сделаю.

      Удалить
    3. можешь потом на fockeach@gmail.com прислать - выложу и повторить попробую.

      Удалить
  3. Пришлю, конечно, но... это же будет простейшее устройство, которое будет считать расход через умягчитель и подавать импульс для активизации промывки.

    ОтветитьУдалить