Kód: Vybrat vše
void timeSwitch(){ //casovy spinac okruhu
bool h12;
bool PM;
if ((unsigned long)(millis() - readingTswitch >= 61000)) { //cas 1min 1sec do dalsiho porovnani po shodě
for(int i=1; i<4; i++) { //smycka pro vyhodnoceni casu sepnuti pro tri okruhy
if(Clock.getHour(h12, PM)== EEPROM.read(20+i)&& Clock.getMinute()== EEPROM.read(30+i)
&& EEPROM.read(40+i)>0) { //pokud EEPROM.read = 0 okruh je vypnuty
Ok[i] = true; //povoli sepnuti v nastaveny cas
readingTswitch = millis(); //povoleni dalsiho porovnani
}
}
}
if(Ok[1]==true && o[1]>1) { //paklize nadesel cas sepnuti okruhu1 a neuplynuly dny mezi zalivkami
o[1]--; //odecti den
Ok[1]=false; //zakaz zalivku
if(o[1]==1 && OdlFlag==true){ //jestlize bylo nastaveno odlozeni a dny do zalivky dosahly 1
Stop24(); //zavolej funkci odlozeni(zresetuje odlozeni do vychoziho stavu)
}
}
if(Ok[2]==true && o[2]>1) { //paklize nadesel cas sepnuti okruhu a neuplynuly dny mezi zalivkami
o[2]--; //odecti den
Ok[2]=false; //zakaz zalivku
}
if(Ok[3]==true && o[3]>1) { //paklize nadesel cas sepnuti okruhu a neuplynuly dny mezi zalivkami
o[3]--; //odecti den
Ok[3]=false; //zakaz zalivku
}
if(Ok[1]==true) { //Po predchozich porovnanich trva stav true
digitalWrite(Okr1,HIGH); //Sepni zavlazovani okruhu
mPrev[1]=Clock.getMinute(); //ulozeni aktualni minuty
m[1]=EEPROM.read(51); //Nacteni nastavene doby zalivky v minutach
Ok[1]=false; //vynulovani okruhu pro pristi cyklus
o[1]=EEPROM.read(41); //nacteni prednastavene frkvence dnu zalivky pro pristi cyklus
}
if(digitalRead (Okr1)) { //pokud je sepnuto rele okruhu
if (mPrev[1] != Clock.getMinute()) { //kdyz se neshoduji aktualni minuty s predchozimi,uplynula minuta
m[1]--; //sniz pocet minut do konce zalivky
mPrev[1]=Clock.getMinute(); //znovu uloz aktualni minutu pro dalsi porovnani
}
if(m[1]<=0) { //kdyz dosahne pocet minut do konce zalivky nuly
digitalWrite(Okr1,LOW); //Vypni rele (ukonci zalivku okruhu )
}
}