// Hlidani hladiny a spinani rele // (verze: posjirka) // Zadani: http://duinozone.cz/index.php/topic,657.0.html // ================================================================= // prirazeni vstupu a vystupu byte pin_re1 = 2; // rele 1 byte pin_re2 = 3; // rele 2 byte pin_cidlo = A0; // analogovy vystup z cidla // konstanty int hladina_max = 200; // uroven hladiny, pri ktere se sepne rele 1 (1V) int hladina_min = 800; // uroven hladiny, ktera se vyhodnoti jako "voda neni" (4V) int prodleva_re1 = 1000; // cas v milisekundach, po ktery bude sepnute rele 1 int prodleva_re2 = 5000; // cas v milisekundach, po ktery bude sepnute rele 2 byte pocet_re1 = 20; // po kolika cvaknutich rele 1 se ma sepnout rele 2 // vnitrni promenne programu byte pocitadlo; // pocitadlo sepnuti rele 1 void setup() { pinMode(pin_re1, OUTPUT); // rele 1 (digitalni vystup) pinMode(pin_re2, OUTPUT); // rele 2 (digitalni vystup) pinMode(pin_cidlo, INPUT); // cidlo vody (analogovy vstup) digitalWrite(pin_re1, HIGH); // obe rele se rozepnou logickou "1" digitalWrite(pin_re2, HIGH); } void loop() { for (pocitadlo = 0 ; pocitadlo < pocet_re1 ; pocitadlo ++) { while (analogRead(pin_cidlo) > hladina_max ) // cekej dokud neni detekovana voda (dokud je nizka hladina) {} // kdyz se hladina zvysi nad "hladina_max" digitalWrite(pin_re1, LOW); // sepni rele 1 delay(prodleva_re1); // drz rele 1 sepnute pozadovany cas digitalWrite(pin_re1, HIGH); // vypni rele 1 while (analogRead(pin_cidlo) < hladina_min ) // cekej dokud je detekovana voda (dokud je vysoka hladina) {} // kdyz hladina klesne pod uroven "hladina_min" ... } // ... dojde k navratu na smycku FOR // po ukonceni smycky FOR se obslouzi rele 2 digitalWrite(pin_re2, LOW); // sepni rele 2 delay(prodleva_re2); // drz rele 2 sepnute pozadovany cas digitalWrite(pin_re2, HIGH); // vypni rele 2 } // konec hlavni smycky loop