Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <DallasTemperature.h>
- #include <OneWire.h>
- #include <DS1307.h>
- #include <RTClib.h>
- #include <TimeLib.h>
- #include <MenuBackend.h>
- #include <LiquidCrystal.h>
- MenuBackend menu = MenuBackend(menuUseEvent,menuChangeEvent); // konstruktor
- MenuItem P1 = MenuItem("USTBAZOWE",1);
- MenuItem P11 = MenuItem("-GODZINA",2);
- MenuItem P12 = MenuItem("-DATA",2);
- MenuItem P13 = MenuItem("-PWM_1",2);
- MenuItem P14 = MenuItem("-PWM_2",2);
- MenuItem P15 = MenuItem("-GRZALKA",2);
- MenuItem P16 = MenuItem("-WENTYLATOR",2);
- MenuItem P17 = MenuItem("-KARMNIK",2);
- MenuItem P171 = MenuItem("-KARMNIK_1",3);
- MenuItem P172 = MenuItem("-KARMNIK_2",3);
- MenuItem P173 = MenuItem("-KARMNIK_3",3);
- MenuItem P2 = MenuItem("KONFIGURACJA",1);
- MenuItem P21 = MenuItem("PWM_1",2);
- MenuItem P211 = MenuItem("SWIT1",3);
- MenuItem P212 = MenuItem("DZIEN1",3);
- MenuItem P213 = MenuItem("STAN1",3);
- MenuItem P22 = MenuItem("PWM_2",2);
- MenuItem P221 = MenuItem("SWIT2",3);
- MenuItem P222 = MenuItem("DZIEN2",3);
- MenuItem P223 = MenuItem("STAN2",3);
- MenuItem P23 = MenuItem("GRZALKA",2);
- MenuItem P231 = MenuItem("TEMP_ZADANA",3);
- MenuItem P232 = MenuItem("MIN_SPADEK",3);
- MenuItem P24 = MenuItem(" WENTYLATOR",2);
- MenuItem P241 = MenuItem("TEMP_ZADANA",3);
- MenuItem P242 = MenuItem("MAX_WZROST",3);
- MenuItem P25 = MenuItem("KARMNIK1",2);
- MenuItem P251 = MenuItem("GODZINA1",3);
- MenuItem P252 = MenuItem("DAWKA1",3);
- MenuItem P26 = MenuItem("KARMNIK2",2);
- MenuItem P261 = MenuItem("GODZINA2",3);
- MenuItem P262 = MenuItem("DAWKA2",3);
- MenuItem P27 = MenuItem("KARMNIK3",2);
- MenuItem P271 = MenuItem("GODZINA3",3);
- MenuItem P272 = MenuItem("DAWKA3",3);
- uint8_t arrowUpDown[8] = {0x4,0xe,0x15,0x4,0x15,0xe,0x4};
- uint8_t arrowDown[8] = {0x4,0x4,0x4,04,0x15,0xe,0x4};
- uint8_t arrowRight[8] = {0x0,0x4,0x2,0x1f,0x2,0x4,0x0};
- uint8_t arrowLeft[8] = {0x0,0x4,0x8,0x1f,0x8,0x4,0x0};
- uint8_t arrowBack[8] = {0x1,0x1,0x5,0x9,0x1f,0x8,0x4};
- volatile int zm =-1; // to dla kontroli zmiany stanu klawiatury
- volatile int x=-1; // zmienna pomocnicza
- volatile int stan_Analog; // wartość na wejściu Analogowym dla klawiaturki analogowej
- char *linia1; // pierwsza linia wyświetlanego tekstu na LCD
- char *linia2; // druga linia wyświetlanego tekstu na LCD
- LiquidCrystal_I2C lcd(0x27,8,9,4,5,6,7);
- RTC_DS1307 rtc;
- char czass[20];
- #define ONE_WIRE_BUS 2
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- #define DS1307_ADDRESS 0x68 //adres zegara
- int silnik_krokowy_L1 = 8;
- int silnik_krokowy_L2 = 9;
- int silnik_krokowy_L3 = 10;
- int silnik_krokowy_L4 = 11;
- int ilosc_cykli_1; //ustawiane z menu opcji wyswietlacz
- int karmienie_hh_1; //ustawiane z menu opcji wyswietlacz
- int karmienie_mm_1; //ustawiane z menu opcji wyswietlacz
- int ilosc_cykli_2; //ustawiane z menu opcji wyswietlacz
- int karmienie_hh_2; //ustawiane z menu opcji wyswietlacz
- int karmienie_mm_2; //ustawiane z menu opcji wyswietlacz
- int ilosc_cykli_3; //ustawiane z menu opcji wyswietlacz
- int karmienie_hh_3; //ustawiane z menu opcji wyswietlacz
- int karmienie_mm_3; //ustawiane z menu opcji wyswietlacz
- #define PWM_1 3
- #define PWM_2 5
- #define sunrise1 3600
- int sunries_hh_1; //ustawiane z menu opcji wyswietlacz
- int sunrise_mm_1; //ustawiane z menu opcji wyswietlacz
- #define sunrise2 3600
- int sunries_hh_2; //ustawiane z menu opcji wyswietlacz
- int sunrise_mm_2; //ustawiane z menu opcji wyswietlacz
- #define lightingTime1 //ustawiane z menu opcji wyswietlacz 36000
- #define lightingTime2 //ustawiane z menu opcji wyswietlacz 32400
- #define sunset1 3600
- #define sunset2 3600
- #define maxPower1 100
- #define maxPower2 100
- #define pwm1Invert false //ustawiane z menu opcji wyswietlacz falese/true
- #define pwm2Invert false //ustawiane z menu opcji wyswietlacz falese/true
- #define pwm1Delay 1
- #define pwm2Delay 1
- long counter = 0;
- int Feeder_button = 6;
- String napisON = "ON";
- String napisOFF = "OFF";
- String napisFANsave;
- String napisHEATERsave;
- String napisPWM1save;
- String napisPWM2save;
- String napisKARMNIK1save;
- String napisKARMNIK2save;
- String napisKARMNIK3save;
- int statusFAN;
- String napisFAN;
- int statusHEATER;
- String napisHEATER;
- int Zadana_TEMP; //ustawiane z menu opcji wyswietlacz =23
- int Min_spad_TEMP; //ustawiane z menu opcji wyswietlacz =2
- int Max_wzr_TEMP; //ustawiane z menu opcji wyswietlacz =3
- int FAN = 4;
- int HEATER = 12;
- int TEMP_SENSOR = 2;
- float tempC;
- int delaysilnik = 10;
- //int GODZ;
- //int MIN;
- //int SEC;
- //joystick
- //const int SW_pin = 7; // digital pin connected to switch output
- //const int X_pin = 0; // analog pin connected to X output
- //const int Y_pin = 1; // analog pin connected to Y output
- void setup()
- {
- //
- Wire.begin();
- Serial.begin(9600);
- sensors.begin();
- sensors.requestTemperatures();
- //digitalWrite(SW_pin, HIGH);
- //zegar
- //RTC.stop();
- //RTC.set(DS1307_MIN,00); //MINUTY -USTAW PRZED WGRANIEM
- //RTC.set(DS1307_HR,00); //GODZINY-USTAW PRZED WGRANIEM
- //RTC.start();
- rtc.begin();
- rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
- //zegar
- //deklaracjapinów
- pinMode(silnik_krokowy_L1, OUTPUT); //silnik_krokowy_L1
- pinMode(silnik_krokowy_L2, OUTPUT); //silnik_krokowy_L2
- pinMode(silnik_krokowy_L3, OUTPUT); //silnik_krokowy_L3
- pinMode(silnik_krokowy_L4, OUTPUT); //silnik_krokowy_L4
- pinMode(FAN, OUTPUT); //FAN
- pinMode(HEATER, OUTPUT); //HEATER
- pinMode(TEMP_SENSOR, INPUT); //TEMP_SENSOR
- pinMode(PWM_1, OUTPUT); //PWM_1
- pinMode(PWM_2, OUTPUT); //PWM_2
- //pinMode(SW_pin, INPUT);
- pinMode(Feeder_button, INPUT_PULLUP); //Feeder_button
- //deklaracjapinów
- linia1=new char[16]; // zainicjowanie dynamicznego wskaźnika do tekstu
- linia2=new char[16]; // to BARDZO WAŻNE, bo wskażnik dynamiczny musi wskazywać na
- //lcd.init(); //initialize the lcd
- lcd.begin(16, 2); // inicjacja LCD
- //lcd.backlight();
- lcd.createChar(3,arrowLeft); // tworzymy w pamięci LCD 5 własnych znaków dla strzałek
- lcd.createChar(4,arrowRight);
- lcd.createChar(5,arrowDown);
- lcd.createChar(6,arrowBack);
- lcd.createChar(7,arrowUpDown);
- menuSetup(); // funkcja klasy MenuBackend - tu tak naprawdę tworzymy nasze menu
- menu.moveDown(); // idziemy do pierwszej opcji
- }
- void loop()
- {
- x=czytaj_1(0);delay(30); // odczytujemy stan klawiatury:
- if(zm!=x) // jeśli była zmiana stanu to :
- {
- switch(x) // sprawdzamy co naciśnięto
- {
- case 0: menu.moveRight();break; // jeśli naciśnięto klawisz w Prawo to przesuń menu w prawo
- case 1: menu.moveUp();break; // menu do góry
- case 2: menu.moveDown();break; // menu w dół
- case 3: menu.moveLeft();break; // menu w lewo
- case 4: menu.use();break; // wciśnięto OK więc skok do funkcji menuUseEvent(MenuUseEvend used)
- // to w tej funkcji właśnie obsługujemy nasze Menu, tu sprawdzamy
- // jaką opcję wybrano i tutaj tworzymy kod do obsługi zdarzenia.
- }
- } zm=x; // przypisanie zmiennej zm wartości x po to, aby dłuższe wciskanie tego
- // samego klawisza nie powodowało ponownej generacji zdarzenia.
- // program reaguje na zmianę stanu klawiatury.
- while (digitalRead(Feeder_button) == LOW) //Jeśli przycisk jest wciśnięty cykl karmienia
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("KARMIENIE RECZNE ");
- Karmienie_cykl1_64();
- //delay(25); w przypadku zakłuceń
- }
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- zegar();
- // Serial.print(GODZ + ":" + MIN);
- Serial.println(czass);
- termometr();
- Serial.print(tempC + "C");
- PWM1();
- PWM2();
- grzalka();
- Serial.print("HEATER: " + napisHEATER );
- wentylator();
- Serial.print("FAN: " + napisFAN );
- karmnik();
- }
- void PWM1()
- {
- if(napisPWM1save==napisON)
- {
- if((sunries_hh_1== tm.Hour)&&(nt sunrise_mm_1==tm.Minute))
- {
- if ( timeExecute(1000,millis()) )
- {
- counter++;
- PWM(PWM_1, sunrise1, lightingTime1, sunset1, maxPower1, pwm1Invert, pwm1Delay );
- }
- }
- else
- {
- if (pwm1Invert) analogWrite(PWM_1,low);
- if (!pwm1Invert) analogWrite(PWM_1,High);
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" PWN1 OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- void PWM2()
- {
- if(napisPWM2save==napisON)
- {
- if((sunries_hh_1==tm.Hour)&&(nt sunrise_mm_1==tm.Minute)&&(napisPWM2save==napisON)
- {
- if ( timeExecute(1000,millis()) )
- {
- counter++;
- PWM(PWM_2, sunrise2, lightingTime2, sunset2, maxPower2, pwm2Invert, pwm2Delay );
- }
- }
- else
- {
- if (pwm2Invert) analogWrite(PWM_2,low);
- if (!pwm2Invert) analogWrite(PWM_2,High);
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" PWN2 OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- boolean timeExecute(int interval, unsigned long currentMillis)
- {
- static unsigned long counterExeLastMillis = 0;
- if (currentMillis - counterExeLastMillis >= interval)
- {
- counterExeLastMillis = currentMillis;
- return true;
- }
- return false;
- }
- byte PWM(byte pwmPin, long sunrise, long lightingTime, long sunset, int maxPower, bool invert, long pwmDelay)
- {
- byte low=0, high=255;
- long count = counter - pwmDelay;
- maxPower = map(maxPower, 0,100,0,255);
- if (invert) { low = 255; high = 0;}
- if (!invert) { low = 0; high = 255;}
- int pwm = low;
- if (count < 0) { analogWrite(pwmPin,low); return low;}
- if (count<=sunrise) {
- pwm = (maxPower*count/sunrise);
- if (pwm>maxPower) { pwm=maxPower; }
- pwm = map(pwm,0,255,low,high);
- analogWrite(pwmPin,pwm);
- return pwm;
- }
- if ( (count > sunrise) && (count <= sunrise + lightingTime) ) {
- pwm=maxPower;
- pwm = map(pwm,0,255,low,high);
- analogWrite(pwmPin,pwm);
- return pwm;
- }
- if ( (count > sunrise + lightingTime) && (count <= sunrise + lightingTime + sunset) ) {
- pwm = (count-(sunrise+lightingTime))*(-maxPower)/sunset+maxPower;
- pwm = map(pwm,0,255,low,high);
- analogWrite(pwmPin,pwm);
- return pwm;
- }
- if (count > sunrise + lightingTime + sunset) {
- analogWrite(pwmPin,low);
- }
- }
- void zegar()
- {
- // GODZ = (RTC.get(DS1307_HR,true)); //godzina pobierana z RTC
- // MIN = (RTC.get(DS1307_MIN,true)); //minuta pobierana z RTC
- // SEC = (RTC.get(DS1307_SEC,true)); //sekundy pobierana z RTC
- // delay(50);
- DateTime now = rtc.now();
- sprintf(czass, "%02d:%02d %02d/%02d/%02d". now.hour(), now.minute(), now.day(), now.mont(), now.year());
- }
- void termometr()
- {
- sensors.requestTemperatures();
- tempC = (sensors.getTempCByIndex(1),0);
- delay(50);
- }
- void grzalka()
- {
- if(napisHEATERsave==napisON)
- {
- if(tempC<=(Zadana_TEMP-Min_spad_TEMP))
- {
- statusHEATER =1;
- }
- else if((Zadana_TEMP)<=tempC)
- {
- statusHEATER =0;
- }
- else
- {
- }
- if(statusHEATER>0)
- {
- digitalWrite(HEATER,HIGH);
- napisHEATER = "ON";
- }
- else
- {
- digitalWrite(HEATER,LOW);
- napisHEATER = "OFF";
- }
- delay(50);
- else
- {
- digitalWrite(HEATER,LOW);
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" HEATER OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- void wentylator()
- {
- if(napisFANsave==napisON)
- {
- if((Zadana_TEMP+Max_wzr_TEMP)<=tempC)
- {
- statusFAN =1;
- }
- else if(tempC<=(Zadana_TEMP+Max_wzr_TEMP-1))
- {
- statusFAN =0;
- }
- else
- {
- }
- if(statusFAN>0)
- {
- digitalWrite(FAN,HIGH);
- napisFAN = "ON";
- }
- else
- {
- digitalWrite(FAN,LOW);
- napisFAN = "OFF";
- }
- delay(50);
- else
- {
- digitalWrite(FAN,LOW);
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" FAN OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- void Karmienie_cykl1_64();
- {
- digitalWrite(silnik_krokowy_L1, HIGH);
- digitalWrite(silnik_krokowy_L2, LOW);
- digitalWrite(silnik_krokowy_L3, LOW);
- digitalWrite(silnik_krokowy_L4, LOW);
- delay(delaysilnik);
- digitalWrite(silnik_krokowy_L1, LOW);
- digitalWrite(silnik_krokowy_L2, HIGH);
- digitalWrite(silnik_krokowy_L3, LOW);
- digitalWrite(silnik_krokowy_L4, LOW);
- delay(delaysilnik);
- digitalWrite(silnik_krokowy_L1, LOW);
- digitalWrite(silnik_krokowy_L2, LOW);
- digitalWrite(silnik_krokowy_L3, HIGH);
- digitalWrite(silnik_krokowy_L4, LOW);
- delay(delaysilnik);
- digitalWrite(silnik_krokowy_L1, LOW);
- digitalWrite(silnik_krokowy_L2, LOW);
- digitalWrite(silnik_krokowy_L3, LOW);
- digitalWrite(silnik_krokowy_L4, HIGH);
- delay(delaysilnik);
- }
- void Karmienie_cykl_1_4();
- {
- for (int w = 0; w < 16; w++)
- {
- digitalWrite(silnik_krokowy_L1, HIGH);
- digitalWrite(silnik_krokowy_L2, LOW);
- digitalWrite(silnik_krokowy_L3, LOW);
- digitalWrite(silnik_krokowy_L4, LOW);
- delay(delaysilnik);
- digitalWrite(silnik_krokowy_L1, LOW);
- digitalWrite(silnik_krokowy_L2, HIGH);
- digitalWrite(silnik_krokowy_L3, LOW);
- digitalWrite(silnik_krokowy_L4, LOW);
- delay(delaysilnik);
- digitalWrite(silnik_krokowy_L1, LOW);
- digitalWrite(silnik_krokowy_L2, LOW);
- digitalWrite(silnik_krokowy_L3, HIGH);
- digitalWrite(silnik_krokowy_L4, LOW);
- delay(delaysilnik);
- digitalWrite(silnik_krokowy_L1, LOW);
- digitalWrite(silnik_krokowy_L2, LOW);
- digitalWrite(silnik_krokowy_L3, LOW);
- digitalWrite(silnik_krokowy_L4, HIGH);
- delay(delaysilnik);
- }
- }
- void karmnik();
- if(napisKARMNIK1save==napisON)
- {
- {
- if((karmienie_hh_1==tm.Hour)&&(karmienie_mm_1==tm.Minute))
- {
- for (int s = 0; s < ilosc_cykli_1; s++)
- {
- Karmienie_cykl_1_4()
- }
- }
- else
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" KARMNIK1 OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- else if(napisKARMNIK2save==napisON)
- {
- {
- if((karmienie_hh_2==tm.Hour)&&(karmienie_mm_2==tm.Minute))
- {
- for (int g = 0; g < ilosc_cykli_2; g++)
- {
- Karmienie_cykl_1_4()
- }
- }
- else
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" KARMNIK2 OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- else if(napisKARMNIK3save==napisON)
- {
- {
- if((karmienie_hh_3==tm.Hour)&&(karmienie_mm_3==tm.Minute))
- {
- for (int h = 0; h < ilosc_cykli_3; h++)
- {
- Karmienie_cykl_1_4()
- }
- }
- else
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print(" KARMNIK3 OFF");delay(2000);
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- delay(50);
- }
- void menuSetup()
- {
- menu.getRoot().add(P1);
- P1.add(P11);
- P11.add(P12);P11.addLeft(P1);
- P12.add(P13);P12.addLeft(P1);
- P13.add(P14);P13.addLeft(P1);
- P14.add(P15);P14.addLeft(P1);
- P15.add(P16);P15.addLeft(P1);
- P16.add(P17);P16.addLeft(P1);
- P17.addRight(P171);
- P171.add(P172);P171.addLeft(P17);
- P172.add(P173);P172.addLeft(P17);
- P173.addLeft(P17);P173.add(P171);
- P1.addRight(P2);
- P2.add(P21);
- P21.addRight(P211);
- P211.add(P212);P21.addLeft(P21);
- P212.add(P213);P212.addLeft(P21);
- P213.add(P21);P212.addLeft(P211);
- P21.addLeft(P2);
- P21.add(P22);
- P22.addRight(P221);
- P221.add(P222);P22.addLeft(P22);
- P222.add(P223);P222.addLeft(P22);
- P223.add(P22);P222.addLeft(P221);
- P22.addLeft(P2);
- P22.add(P23);
- P23.addRight(P231);
- P231.add(P232);P23.addLeft(P23);
- P232.add(P23);P232.addLeft(P231);
- P23.addLeft(P2);
- P23.add(P24);
- P24.addRight(P241);
- P241.add(P242);P24.addLeft(P24);
- P242.add(P42);P242.addLeft(P241);
- P24.addLeft(P2);
- P24.add(P25);
- P25.addRight(P231);
- P251.add(P252);P25.addLeft(P25);
- P252.add(P25);P252.addLeft(P251);
- P25.addLeft(P2);
- P25.add(P26);
- P26.addRight(P261);
- P241.add(P262);P26.addLeft(P26);
- P242.add(P26);P262.addLeft(P261);
- P26.addLeft(P2);
- P26.add(P27);
- P27.addRight(P271);
- P251.add(P272);P25.addLeft(P27);
- P252.add(P27);P252.addLeft(P271);
- P27.addRight(P1);
- }
- // --- wersja dla klawiatury 5-cio przyciskowej DFRobot --------------------------------------
- int czytaj_1(int analog)
- {
- int stan_Analog = analogRead(analog);delay(30);//Serial.println(stan_Analog);
- if (stan_Analog > 1000) return -1; // dla wartosci poza zakresem
- if (stan_Analog < 50) return 0; // w prawo
- if (stan_Analog < 150) return 1; // do gĂłry
- if (stan_Analog < 300) return 2; // w dół
- if (stan_Analog < 500) return 3; // w lewo
- if (stan_Analog < 700) return 4; // OK
- return -1; // nic nie wcisnieto
- }
- // --- wersja dla joysticka (2 wejscia analogowe + pin cyfrowy -------------------------------
- //int czytaj_2(int poziom, int pion, int pinD)
- //{
- // poziom - nr wejścia analogowego do którego podłączona jest manetka joysticka dla ruchu lewo-prawo
- // pion - nr wejścia analogowego do którego podłączona jest manetka joysticka dla ruchu góra-dół
- // pinD - nr pinu cyfrowego do którego podłączony jest przycisk OK w joysticku
- //int stan1= analogRead(pion); {delay(60);if(stan1>0)stan1=(stan1+50)/1024+1;}
- // int stan2= analogRead(poziom); {delay(60);if(stan2>0)stan2=(stan2+50)/1024+1;}
- // int stanD=digitalRead(pinD);
- // if(stanD==LOW) return 4; // OK
- // if(stan1==0) return 2; // w dół
- // if(stan1==2) return 1; // do gĂłry
- // if(stan2==0) return 3; // w lewo
- if(stan2==2) return 0; // w prawo
- // return -1; // nic nie wcisnieto
- //}
- void menuChangeEvent(MenuChangeEvent changed) // funkcja klasy MenuBackend
- {
- /* tak naprawdę to tylko tutaj przydaje się ów shortkey i służy przede wszystkim do wzbogacenia menu
- o symbole strzałek w zależności co wybrano. Wszystko co tutaj się wyprawia jest pokazywane na LCD.
- */
- int c=changed.to.getShortkey(); // pobieramy shortkey (1,2,3, lub4)
- lcd.clear(); // bez komentarza
- lcd.setCursor(0,0);
- if(c==1) // jeśli to menu głowne (shortkey=1) to:
- {
- lcd.write(3); // strzałka w lewo
- strcpy(linia1,changed.to.getName()); // tworzymy napis w pierwszej linii
- lcd.print(linia1); // wyświetlamy ją
- lcd.setCursor(15,0);lcd.write(4); // strzałka w prawo
- lcd.setCursor(0,1);lcd.write(5); // strzałka w dół
- lcd.setCursor(15,1);lcd.write(5); // strzałka w dół
- }
- if(c==2) // jeśli to podmenu dla dziecka - (shortkey=2) to:
- {
- lcd.print("*"); // rysujemy gwiazdkę
- strcpy(linia2,changed.to.getName()); // tworzymy napis w pierwszej linii
- lcd.print(linia1); // wyświetlamy ją
- lcd.setCursor(15,0);lcd.print("*"); // gwiazdka
- lcd.setCursor(0,1);lcd.write(6); // druga linia i strzałka powrotu (arrowBack)
- lcd.print(changed.to.getName()); // wyświetlamy nazwe "dziecka"
- lcd.setCursor(15,1);lcd.write(7); // strzałka góra-dół
- }
- if(c==3) // jeśli dziecko ma dziecko - (shortkey =3) to:
- {
- lcd.print("*"); // gwiazdka
- strcpy(linia2,changed.to.getName()); // kopiujemy akt. nazwe opcji menu do zmiennej linia2
- lcd.print(linia1); // i wyświetlamy pierwszą linię
- lcd.setCursor(15,0);lcd.print("*"); // gwiazdka
- lcd.setCursor(0,1);lcd.write(6); // druga linia i strzałka arrowBack
- lcd.print(changed.to.getName()); // wyświetlamy wnuka w drugiej linii
- lcd.setCursor(15,1);lcd.write(4); // strzałka w prawo bo są wnuki
- }
- if(c==4) // jeśli to wnuk (shortkey =4) to:
- {
- lcd.print("*"); // gwaizdka
- lcd.print(linia2); // w pierwszej linii wyświetlamy dziecko ( czyli rodzica wnuka)
- lcd.setCursor(15,0);lcd.print("*"); // gwaizdka
- lcd.setCursor(0,1);lcd.write(6); // druga linia i strzałka arrowBack
- lcd.print(changed.to.getName()); // wyświetlamy wnuka
- lcd.setCursor(15,1);lcd.write(7); // strzałka góra-dół
- }
- }
- void menuUseEvent(MenuUseEvent used) // funkcja klasy MenuBackend - reakcja na wciśnięcie OK
- // tutaj właśnie oddajemy menu na rzecz akcji obsługi klawisza OK
- {
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // TERAZ KONFIGURACJA USTAWIEN BAZOWYCH
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- if (used.item.getName() == "-WENTYLATOR")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisFANsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisFANsave=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisFANsave=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisFANsave==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_FAN");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisFANsave==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_FAN");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-GRZALKA")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisHEATERsave=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisHEATERsave=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisHEATERsave==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_GRZALKA");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisHEATERsave==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_GRZALKA");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-PWM_1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisPWM1save=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisPWM1save=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisPWM1save==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_PWM1");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisHEATERsave==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_PWM1");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-PWM_2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisPWM2save=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisPWM2save=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisPWM2save==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisHEATERsave==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-PWM_2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisPWM2save=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisPWM2save=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisPWM2save==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisHEATERsave==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-KARMNIK_1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisKARMNIK1save=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisKARMNIK1save=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisKARMNIK1save==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisKARMNIK1save==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-KARMNIK_2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisKARMNIK2save=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisKARMNIK2save=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisKARMNIK2save==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisKARMNIK2save==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- if (used.item.getName() == "-KARMNIK_3")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("STAN = ");
- lcd.setCursor(8,0);lcd.print(napisHEATERsave); // wyświetlamy stan
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {napisKARMNIK3save=napisON;lcd.setCursor(8,0);lcd.print(napisON);delay(300);}
- if(akcja==2) {napisKARMNIK3save=napisOFF;lcd.setCursor(8,0);lcd.print(napisOFF);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- if(napisKARMNIK3save==napisON)
- {
- lcd.setCursor(0,0);lcd.print("*START_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- if(napisKARMNIK3save==napisOFF)
- {
- lcd.setCursor(0,0);lcd.print("*STOP_PWM2");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // KONIEC KONFIGURACJA USTAWIEN BAZOWYCH
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // KONFIGURACJA USTAWIEN
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // ZMIANA TEMPERATURY ZADANEJ TERMOSTATU
- // w tym przykładzie programik czeka aż ustawisz jakąś temperaturę i po wciśnięciu OK wraca do pętli głównej
- if (used.item.getName() == "TEMP_ZADANA") // dokładnie taki sam ciąg " Temperatura"
- {
- lcd.setCursor(0,0);lcd.write(7); // wyswietlamy nasz symbol strzałki góra-dół
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.temp. = "); // tekst dla użytkownika
- lcd.setCursor(13,0);lcd.print(Zadana_TEMP); // wyświetlamy akt. temperaturę
- int akcja=-1;delay(1000); // zmienna pomocnicza, sterująca dla petli while
- // jesli nie puścisz klawisza OK w ciągu 1 sek. to powrót do menu
- while(akcja!=4) // ta pętla trwa tak długo aż wciśniesz klawisz OK
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300); // odczyt stanu klawiatury - funkcja czytaj_1 lub czytaj_2 lub czytaj_3
- // opis poniżej przy 3 różnych definicjach funkcji czytaj
- if(zm!=akcja) // ruszamy do pracy tylko wtedy gdy zmienił sie stan klawiatury
- {
- if (akcja==1) {Zadana_TEMP++;if(Zadana_TEMP>99)Zadana_TEMP=99;lcd.setCursor(13,0);lcd.print(Zadana_TEMP);delay(300);}
- // jesli akcja=1 (czyli wciśnieto klawisz w górę to zwiększono temperaturę
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==2) {Zadana_TEMP-;if(Zadana_TEMP<1)Zadana_TEMP=1;lcd.setCursor(13,0);lcd.print(Zadana_TEMP);delay(300);}
- // jesli akcja=2 (czyli wciśnięto klawisz w dół to mniejszono temperaturę
- // ustawiono min próg i wyświetlono obecną temperaturę
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- // tu WAŻNY MOMENT - kończy się pętla while i zwracamy sterowanie do głównej pętli loop()
- }
- // ZMIANA minimalnej temperatury
- if (used.item.getName() == "MIN_SPADEK")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.temp. = ");
- lcd.setCursor(13,0);lcd.print(Min_spad_TEMP); // wyświetlamy akt. temperaturę
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {Min_spad_TEMP++;if(Min_spad_TEMP>99)Min_spad_TEMP=99;lcd.setCursor(13,0);lcd.print(Min_spad_TEMP);delay(300);}
- if(akcja==2) {Min_spad_TEMP--;if(Min_spad_TEMP<1)Min_spad_TEMP=1;lcd.setCursor(13,0);lcd.print(Min_spad_TEMP);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA maxymalnej temperatury
- if (used.item.getName() == "MAX_WZROST")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.temp. = ");
- lcd.setCursor(13,0);lcd.print(Max_wzr_TEMP); // wyświetlamy akt. temperaturę
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {Max_wzr_TEMP++;if(Max_wzr_TEMP>99)Max_wzr_TEMP=99;lcd.setCursor(13,0);lcd.print(Max_wzr_TEMP);delay(300);}
- if(akcja==2) {Max_wzr_TEMP--;if(Max_wzr_TEMP<1)Max_wzr_TEMP=1;lcd.setCursor(13,0);lcd.print(Max_wzr_TEMP);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA GODZINY SWIT1
- if (used.item.getName() == "SWIT1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.GODZ = ");
- lcd.setCursor(13,0);lcd.print(sunries_hh_1 + ":" + sunrise_mm_1); // wyświetlamy akt. godzinę
- int akcja=-1;delay(1000);
- while(akcja!=4) // ta pętla trwa tak długo aż wciśniesz klawisz OK
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {sunries_hh_1++;if(sunries_hh_1>23)sunries_hh_1=23;lcd.setCursor(13,0);lcd.print(sunries_hh_1);delay(300);}
- // jesli akcja=1 (czyli wciśnieto klawisz w górę to zwiększono temperaturę
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==2) {sunries_hh_1-;if(sunries_hh_1<0)sunries_hh_1=0;lcd.setCursor(13,0);lcd.print(sunries_hh_1);delay(300);}
- // jesli akcja=2 (czyli wciśnięto klawisz w dół to mniejszono temperaturę
- // ustawiono min próg i wyświetlono obecną temperaturę
- if (akcja==0) {sunrise_mm_1++;if(sunrise_mm_1>59)sunrise_mm_1=59;lcd.setCursor(13,0);lcd.print(sunrise_mm_1);delay(300);}
- // jesli akcja=0 (czyli wciśnieto klawisz w prawo to zwiększono minuty
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==3) {sunrise_mm_1-;if(sunrise_mm_1<0)sunrise_mm_1=0;lcd.setCursor(13,0);lcd.print(sunrise_mm_1);delay(300);}
- // jesli akcja=3 (czyli wciśnięto klawisz w lewo to mniejszono minuty
- // ustawiono min próg i wyświetlono obecną temperaturę
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA GODZINY SWIT2
- if (used.item.getName() == "SWIT2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.GODZ = ");
- lcd.setCursor(13,0);lcd.print(sunries_hh_2 + ":" + sunrise_mm_2); // wyświetlamy akt. godzinę
- int akcja=-1;delay(1000);
- while(akcja!=4) // ta pętla trwa tak długo aż wciśniesz klawisz OK
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {sunries_hh_2++;if(sunries_hh_2>23)sunries_hh_2=23;lcd.setCursor(13,0);lcd.print(sunries_hh_2);delay(300);}
- // jesli akcja=1 (czyli wciśnieto klawisz w górę to zwiększono temperaturę
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==2) {sunries_hh_2-;if(sunries_hh_2<0)sunries_hh_2=0;lcd.setCursor(13,0);lcd.print(sunries_hh_2);delay(300);}
- // jesli akcja=2 (czyli wciśnięto klawisz w dół to mniejszono temperaturę
- // ustawiono min próg i wyświetlono obecną temperaturę
- if (akcja==0) {sunrise_mm_2++;if(sunrise_mm_2>59)sunrise_mm_2=59;lcd.setCursor(13,0);lcd.print(sunrise_mm_2);delay(300);}
- // jesli akcja=0 (czyli wciśnieto klawisz w prawo to zwiększono minuty
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==3) {sunrise_mm_2-;if(sunrise_mm_2<0)sunrise_mm_2=0;lcd.setCursor(13,0);lcd.print(sunrise_mm_2);delay(300);}
- // jesli akcja=3 (czyli wciśnięto klawisz w lewo to mniejszono minuty
- // ustawiono min próg i wyświetlono obecną temperaturę
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA długości dnia 1h swit + DŁUGOŚĆ DNIA + zmierzch
- if (used.item.getName() == "DZIEN1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.czas. = ");
- lcd.setCursor(13,0);lcd.print(lightingTime1); // wyświetlamy akt. czas swiecenia
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {lightingTime1++;if(lightingTime1>23)lightingTime1=23;lcd.setCursor(13,0);lcd.print(lightingTime1);delay(300);}
- if(akcja==2) {lightingTime1--;if(lightingTime1<1)lightingTime1=1;lcd.setCursor(13,0);lcd.print(lightingTime1);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA długości dnia 1h swit + DŁUGOŚĆ DNIA + zmierzch
- if (used.item.getName() == "DZIEN2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.czas. = ");
- lcd.setCursor(13,0);lcd.print(lightingTime2); // wyświetlamy akt. czas swiecenia
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {lightingTime2++;if(lightingTime2>23)lightingTime2=23;lcd.setCursor(13,0);lcd.print(lightingTime2);delay(300);}
- if(akcja==2) {lightingTime2--;if(lightingTime2<1)lightingTime2=1;lcd.setCursor(13,0);lcd.print(lightingTime2);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA true / false PWM1
- if (used.item.getName() == "STAN1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.stan. = ");
- lcd.setCursor(13,0);lcd.print(pwm1Invert); // wyświetlamy akt. czas swiecenia
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {!pwm1Invert;lcd.setCursor(13,0);lcd.print(pwm1Invert);delay(300);}
- if(akcja==2) {!pwm1Invert;lcd.setCursor(13,0);lcd.print(pwm1Invert);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA true / false PWM2
- if (used.item.getName() == "STAN2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.stan. = ");
- lcd.setCursor(13,0);lcd.print(pwm2Invert); // wyświetlamy akt. czas swiecenia
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {!pwm2Invert;lcd.setCursor(13,0);lcd.print(pwm2Invert);delay(300);}
- if(akcja==2) {!pwm2Invert;lcd.setCursor(13,0);lcd.print(pwm2Invert);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA GODZINY karmienie 1
- if (used.item.getName() == "GODZINA1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.GODZ = ");
- lcd.setCursor(13,0);lcd.print(karmienie_hh_1 + ":" + karmienie_mm_1); // wyświetlamy akt. godzinę
- int akcja=-1;delay(1000);
- while(akcja!=4) // ta pętla trwa tak długo aż wciśniesz klawisz OK
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {karmienie_hh_1++;if(karmienie_hh_1>23)karmienie_hh_1=23;lcd.setCursor(13,0);lcd.print(karmienie_hh_1);delay(300);}
- // jesli akcja=1 (czyli wciśnieto klawisz w górę to zwiększono temperaturę
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==2) {karmienie_hh_1-;if(karmienie_hh_1<0)karmienie_hh_1=0;lcd.setCursor(13,0);lcd.print(karmienie_hh_1);delay(300);}
- // jesli akcja=2 (czyli wciśnięto klawisz w dół to mniejszono temperaturę
- // ustawiono min próg i wyświetlono obecną temperaturę
- if (akcja==0) {karmienie_mm_1++;if(karmienie_mm_1>59)karmienie_mm_1=59;lcd.setCursor(13,0);lcd.print(karmienie_mm_1);delay(300);}
- // jesli akcja=0 (czyli wciśnieto klawisz w prawo to zwiększono minuty
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==3) {karmienie_mm_1-;if(karmienie_mm_1<0)karmienie_mm_1=0;lcd.setCursor(13,0);lcd.print(karmienie_mm_1);delay(300);}
- // jesli akcja=3 (czyli wciśnięto klawisz w lewo to mniejszono minuty
- // ustawiono min próg i wyświetlono obecną temperaturę
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA GODZINY karmienie 2
- if (used.item.getName() == "GODZINA2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.GODZ = ");
- lcd.setCursor(13,0);lcd.print(karmienie_hh_2 + ":" + karmienie_mm_2); // wyświetlamy akt. godzinę
- int akcja=-1;delay(1000);
- while(akcja!=4) // ta pętla trwa tak długo aż wciśniesz klawisz OK
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {karmienie_hh_2++;if(karmienie_hh_2>23)karmienie_hh_2=23;lcd.setCursor(13,0);lcd.print(karmienie_hh_2);delay(300);}
- // jesli akcja=1 (czyli wciśnieto klawisz w górę to zwiększono temperaturę
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==2) {karmienie_hh_2-;if(karmienie_hh_2<0)karmienie_hh_2=0;lcd.setCursor(13,0);lcd.print(karmienie_hh_2);delay(300);}
- // jesli akcja=2 (czyli wciśnięto klawisz w dół to mniejszono temperaturę
- // ustawiono min próg i wyświetlono obecną temperaturę
- if (akcja==0) {karmienie_mm_2++;if(karmienie_mm_2>59)karmienie_mm_2=59;lcd.setCursor(13,0);lcd.print(karmienie_mm_2);delay(300);}
- // jesli akcja=0 (czyli wciśnieto klawisz w prawo to zwiększono minuty
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==3) {karmienie_mm_2-;if(karmienie_mm_2<0)karmienie_mm_2=0;lcd.setCursor(13,0);lcd.print(karmienie_mm_2);delay(300);}
- // jesli akcja=3 (czyli wciśnięto klawisz w lewo to mniejszono minuty
- // ustawiono min próg i wyświetlono obecną temperaturę
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA GODZINY karmienie 3
- if (used.item.getName() == "GODZINA3")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("Ust.GODZ = ");
- lcd.setCursor(13,0);lcd.print(karmienie_hh_3 + ":" + karmienie_mm_3); // wyświetlamy akt. godzinę
- int akcja=-1;delay(1000);
- while(akcja!=4) // ta pętla trwa tak długo aż wciśniesz klawisz OK
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {karmienie_hh_3++;if(karmienie_hh_3>23)karmienie_hh_2=23;lcd.setCursor(13,0);lcd.print(karmienie_hh_3);delay(300);}
- // jesli akcja=1 (czyli wciśnieto klawisz w górę to zwiększono temperaturę
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==2) {karmienie_hh_3-;if(karmienie_hh_3<0)karmienie_hh_3=0;lcd.setCursor(13,0);lcd.print(karmienie_hh_3);delay(300);}
- // jesli akcja=2 (czyli wciśnięto klawisz w dół to mniejszono temperaturę
- // ustawiono min próg i wyświetlono obecną temperaturę
- if (akcja==0) {karmienie_mm_3++;if(karmienie_mm_3>59)karmienie_mm_3=59;lcd.setCursor(13,0);lcd.print(karmienie_mm_3);delay(300);}
- // jesli akcja=0 (czyli wciśnieto klawisz w prawo to zwiększono minuty
- // ustawiono max próg i wyświetlono obecną temperaturę
- if(akcja==3) {karmienie_mm_3-;if(karmienie_mm_3<0)karmienie_mm_3=0;lcd.setCursor(13,0);lcd.print(karmienie_mm_3);delay(300);}
- // jesli akcja=3 (czyli wciśnięto klawisz w lewo to mniejszono minuty
- // ustawiono min próg i wyświetlono obecną temperaturę
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA maxymalnej DAWKA1
- if (used.item.getName() == "DAWKA1")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("ust.cykl. = ");
- lcd.setCursor(13,0);lcd.print(ilosc_cykli_1); // wyświetlamy ust ilosc cykli
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {ilosc_cykli_1++;if(ilosc_cykli_1>999)ilosc_cykli_1=999;lcd.setCursor(13,0);lcd.print(ilosc_cykli_1);delay(300);}
- if(akcja==2) {ilosc_cykli_1--;if(ilosc_cykli_1<1)ilosc_cykli_1=1;lcd.setCursor(13,0);lcd.print(ilosc_cykli_1);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA maxymalnej DAWKA2
- if (used.item.getName() == "DAWKA2")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("ust.cykl. = ");
- lcd.setCursor(13,0);lcd.print(ilosc_cykli_2); // wyświetlamy ust ilosc cykli
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {ilosc_cykli_2++;if(ilosc_cykli_2>999)ilosc_cykli_2=999;lcd.setCursor(13,0);lcd.print(ilosc_cykli_2);delay(300);}
- if(akcja==2) {ilosc_cykli_2--;if(ilosc_cykli_2<1)ilosc_cykli_2=1;lcd.setCursor(13,0);lcd.print(ilosc_cykli_2);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- // ZMIANA maxymalnej DAWKA3
- if (used.item.getName() == "DAWKA3")
- {
- lcd.setCursor(0,0);lcd.write(7);
- lcd.print(" ");lcd.setCursor(1,0);lcd.print("ust.cykl. = ");
- lcd.setCursor(13,0);lcd.print(ilosc_cykli_3); // wyświetlamy ust ilosc cykli
- int akcja=-1;delay(1000);
- while(akcja!=4)
- {
- zm=-1;
- akcja=czytaj_1(0);//delay(300);
- if(zm!=akcja)
- {
- if (akcja==1) {ilosc_cykli_3++;if(ilosc_cykli_3>999)ilosc_cykli_3=999;lcd.setCursor(13,0);lcd.print(ilosc_cykli_3);delay(300);}
- if(akcja==2) {ilosc_cykli_3--;if(ilosc_cykli_3<1)ilosc_cykli_3=1;lcd.setCursor(13,0);lcd.print(ilosc_cykli_3);delay(300);}
- if(akcja==4) // jeśli wciśnieto OK
- {
- lcd.setCursor(0,0);lcd.print("*ZMIANA OK");delay(2000); // pokazujemy OK przez 2 sek.
- lcd.setCursor(1,0);lcd.print(" "); // czyścimy linię
- lcd.setCursor(1,0);lcd.print(linia1); // odtwarzamy poprzedni stan na LCD
- }
- }
- } zm=akcja; // aktualizacja zmiennej zm, po to aby reagować tylko na zmiany stanu klawiatury
- }
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // KONFIGURACJA USTAWIEN
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement