Created
February 17, 2018 22:52
-
-
Save blindp/77805e4a3e0548e851c8ab0d86e55e51 to your computer and use it in GitHub Desktop.
otevirani oken skleniku
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Trida pro elektricke ovladani oken skleniku. | |
* Koncove polohy nejsou reseny, jsou zabudovany uvnitr motoru. | |
* Pouziti: | |
* Konstruktor - Window okno1(pin_otevirani, pin_zavirani, doba_chodu_k_uplnemu_otevreni(0 = defaultni)); | |
* Zavrit okno - okno1.Update(0); | |
* Otevrit na 50% - okno1.Update(50); | |
* Zjistit stav - okno1.State(); | |
* Blind Pew 2017 <blind.pew96@gmail.com> GNU GPL v3 | |
*/ | |
#define DEFAULT_TIME_FULL_OPEN_WINDOW 10000 //defaultni doba chodu motorku pro uplne zavreni/otevreni okna | |
class Window{ | |
private: | |
int s_open,s_close = 0; | |
int pin_open, pin_close; | |
int time_full_open = DEFAULT_TIME_FULL_OPEN_WINDOW; | |
int time_open_close; | |
unsigned long prv_millis = 0; | |
byte state = 0; | |
public: | |
Window(int o_p, int c_p, int t) { | |
pin_open = o_p; | |
pin_close = c_p; | |
if(t > 0) time_full_open = t; | |
pinMode(pin_open, OUTPUT); | |
pinMode(pin_close, OUTPUT); | |
} | |
byte State(){ //vrati miru otevreni okna | |
return state; | |
} | |
void Update(byte s){ //otevre/zavre okno | |
if((s > state) && (!s_open && !s_close)) { //budeme otevirat, start otevirani | |
time_open_close = map(s-state,0,100,0,time_full_open); | |
prv_millis = millis(); | |
s_open = HIGH; | |
digitalWrite(pin_open, s_open); | |
} | |
if((s < state) && (!s_close && !s_open)) { //budeme zavirat, start zavirani | |
time_open_close = map(state-s,0,100,0,time_full_open); | |
prv_millis = millis(); | |
s_close = HIGH; | |
digitalWrite(pin_close, s_close); | |
} | |
if((millis() - prv_millis >= time_open_close) && (s_open || s_close)) { //ukonci zavirani/otevirani | |
s_open = LOW; | |
s_close = LOW; | |
state = s; | |
digitalWrite(pin_open, s_open); | |
digitalWrite(pin_close, s_close); | |
} | |
} | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment