Skip to content

Instantly share code, notes, and snippets.

@blindp
Created February 17, 2018 22:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blindp/77805e4a3e0548e851c8ab0d86e55e51 to your computer and use it in GitHub Desktop.
Save blindp/77805e4a3e0548e851c8ab0d86e55e51 to your computer and use it in GitHub Desktop.
otevirani oken skleniku
/*
* 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