Sterownik zraszacza Atos

Zainspirowany jednym z komentarzy na facebooku postanowiłem stworzyć szybki i prosty w obsłudze sterownik zraszania.

Sterownik Infiniti posiada możliwość włączania przekaźników na minutę (czy też kilka). W przypadku np zraszania paludarium wodą jest to zdecydowanie zbyt długi okres. Mając pod ręką gotowy zmontowany sterownik Bezik postanowiłem przerobić go (wgrywając kod który jest na dole) jako sterownik do zraszania. W samym czujniku nic się nie zmieniło – piny są dokładnie te same. W programie nie uwzględniłem tylko buzzer-a (nie jest potrzebny).

Zasada działania jest prosta – ustawiamy dwie zmienne (zaznaczone na czerwono w skrypcie) – „delaj” oraz „on”. Pierwsza to czas pomiędzy poszczególnymi uruchomieniami sterownika. Druga (on) to czas działania sterownika (gniazda).

Wartości które aktualnie wpisałem uruchamiają gniazdo raz na godzinę (+- kilka sekund). Gniazdo działa przez 10 sekund. Wartości te można dowolnie modyfikować – należy pamiętać jednak, że każda zmiana wymaga ponownego wgrania programu do sterownika. Liczniki nie są zapamiętywane – każde odłączenie sterownika od prądu zresetuje obydwa.

Jeśli połączy się funkcje Atosa razem z Bezikiem możemy uzyskać urządzenie, które np raz na godzinę uruchamia zraszanie ale dodatkowo informuje za pomocą buzzera o zalaniu (nie odłączając jednak zasilania stycznika – ten używany jest do zraszania)

Poniżej znajduje się kod do wgrania do Arduino.

int delaj = 3600;       //czas opóźnienia działania w sekundach
int on = 10;            //czas działania w sekundach
int stycznik = 2;       //pin13 do podłączenia stycznika

/*----------------------poniżej tego tekstu nie dotykać :) -----------------------------*/
int licznik_on = 0;
int licznik_delaj = 0;

void setup() 
   {
      Serial.begin(9600);
      pinMode(stycznik, OUTPUT);
   }

void loop() 
   {
      if (licznik_delaj<delaj)
         {
            licznik_delaj++;
            digitalWrite(stycznik,HIGH);
            delay(1000);
            Serial.print("OFF "); 
            Serial.println(delaj-licznik_delaj);
         }
      else
         { 
            digitalWrite(stycznik,LOW);
            Serial.print("ON ");
            Serial.print(on);
            Serial.println("s ");
            delay(on*1000);
            licznik_delaj=0;
         } 
   }