Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.30 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <EEPROM.h>
  3. #include <DS3232RTC.h>
  4. #include <Time.h>
  5. #include <LiquidCrystal_I2C.h> // LCD
  6.  
  7. #define BACKLIGHT_PIN 3
  8. LiquidCrystal_I2C lcd(0x27,20,4);
  9.  
  10. int delayLcdLight = 0;
  11. int delayLoop = 1000;
  12. int delayLcdLightCompare = 10;
  13. // LEDY
  14. int LEDWHITE = 11;    //diody białe
  15. int LEDFS = 10; // diody full spectrum
  16. int LEDBL = 9; // diody blue
  17.  
  18. int GODZ;
  19. int MIN;
  20. int SEC;
  21.  
  22. int LEVEL_WHITE;
  23. int LEVEL_FS;
  24. int LEVEL_BL;
  25.  
  26. int POWER_STEP[61] =    //stopień rozjaśniania ledów
  27. {
  28.   255,230,220,210,200,195,190,185,180,175,
  29.   170,165,160,155,150,145,140,135,130,125,
  30.   120,115,110,105,100,95,90,85,80,75,
  31.   70,65,60,55,50,45,40,35,30,25,
  32.   20,19,18,17,16,15,14,13,12,11,
  33.   10,9,8,7,6,5,4,3,2,1,0
  34. };
  35. int POWER_STEP_WHITE[61] =    //stopień rozjaśniania ledów
  36. {
  37.   255,230,220,210,200,195,190,185,180,175,
  38.   170,165,160,155,150,145,140,135,130,125,
  39.   120,115,110,105,100,95,90,88,84,82,
  40.   80,78,74,72,70,68,66,64,62,60,
  41.   59,58,57,56,55,54,53,52,51,50,
  42.   0,0,0,0,0,0,0,0,0,0,0
  43. };
  44.  
  45. int MAX_WHITE = 20;
  46. int MAX_FS = 20;
  47. int MAX_BL = 20;
  48.  
  49. int MAX_NIGHT_WHITE = 60;
  50. int MAX_NIGHT_FS = 60;
  51. int MAX_NIGHT_BL = 58;
  52.  
  53. int EEPROM_ADDR_MAX_WHITE = 0;
  54. int EEPROM_ADDR_MAX_FS = 1;
  55. int EEPROM_ADDR_MAX_BL = 2;
  56. int EEPROM_ADDR_MAX_NIGHT_WHITE = 3;
  57. int EEPROM_ADDR_MAX_NIGHT_FS = 4;
  58. int EEPROM_ADDR_MAX_NIGHT_BL = 5;
  59.  
  60. int dzienG = 10;    //początek dnia - godziny
  61. int dzienM = 0;    //początek dnia - minuty
  62. int nocG = 22;    //początek nocy - godziny
  63. int nocM = 0;    //początek nocy - minuty
  64. int ZMIANA = 60;    //długość trwania rozjaśniania
  65.  
  66. int EEPROM_ADDR_dzienG = 6;
  67. int EEPROM_ADDR_dzienM = 7;
  68. int EEPROM_ADDR_nocG = 8;
  69. int EEPROM_ADDR_nocM = 9;
  70. int EEPROM_ADDR_ZMIANA = 10;
  71.  
  72. int STEP = 1;    //długość trwania jednego kroku
  73.  
  74. int DWHITE;    //stopień rozjaśniania LED WHITE
  75. int DFS;    //stopień rozjaśniania LED FULL SPECTRUM
  76. int DBL;    //stopień rozjaśniania LED BLUE
  77.  
  78. String DAY;
  79.  
  80. // BUTTONY
  81. int buttonState = 0;
  82. const int buttonPin[] = {2,3,4,5}; // 3 - menu, left, 2 - ok, 5 - down, 4 - up
  83. bool showMenu = false;
  84. bool editing = false;
  85. bool subEditing = false;
  86. int menuStep = 0;
  87.  
  88. // TEMPS
  89. int channelSelect = 0;
  90. int tempG = 0;
  91. int tempM = 0;
  92. int tempNumber = 0;
  93.  
  94. /*
  95.  * 1 - poczatek dnia,
  96.  * 2 - poczatek nocy,
  97.  * 3 - dlugosc trwania rozjasnienia,
  98.  * 4 - dzien - max led
  99.  * 5 - noc - max led
  100.  */
  101.  
  102. void setup()
  103. {
  104.  
  105.   lcd.init();
  106.   Wire.begin();
  107.   lcd.setBacklight(HIGH);
  108.  
  109.   setSyncProvider(RTC.get);   // the function to get the time from the RTC
  110.   if(timeStatus() != timeSet)
  111.       Serial.println("Unable to sync with the RTC");
  112.   else
  113.       Serial.println("RTC has set the system time");    
  114.  
  115.   getEEPROMSettings();
  116.  
  117.   // ustawienie pinow diod
  118.   pinMode(LEDWHITE, OUTPUT);
  119.   pinMode(LEDFS, OUTPUT);
  120.   pinMode(LEDBL, OUTPUT);
  121.  
  122.   LEVEL_WHITE = 0;
  123.   LEVEL_FS = 0;
  124.   LEVEL_BL = 0;
  125.  
  126.  
  127.   for(int x=0; x<4; x++)
  128.   {
  129.     Serial.println(x);
  130.     pinMode(buttonPin[x], INPUT_PULLUP);
  131.   }  
  132.  
  133.   Serial.begin(9600);    //serial port
  134. }
  135.  
  136. void loop()
  137. {  
  138.   if (delayLcdLight >= delayLcdLightCompare) {
  139.     lcd.setBacklight(LOW);
  140.     delayLcdLight = delayLcdLightCompare;
  141.   }
  142.   lcd.clear();
  143. /*
  144.  * 1 - poczatek dnia,
  145.  * 2 - poczatek nocy,
  146.  * 3 - dlugosc trwania rozjasnienia,
  147.  * 4 - dzien - max led
  148.  * 5 - noc - max led
  149.  */
  150.   String action;
  151.   for(int x=0; x<4; x++)
  152.   {
  153.     buttonState = digitalRead(buttonPin[x]);
  154.     if (buttonState == LOW) {
  155.       delayLcdLight = 0;
  156.       lcd.setBacklight(HIGH);
  157.     }
  158.     // 3 - menu, left, 2 - ok, 5 - down, 4 - up
  159.     if (buttonState == LOW && buttonPin[x] == 3) {
  160.     // PRZYCISK MENU
  161.       if (!showMenu) {
  162.         showMenu = true;
  163.       } else if (showMenu && editing) {
  164.         editing = false;
  165.         subEditing = false;
  166.       } else if (showMenu) {
  167.         showMenu = false;
  168.         menuStep = 0;
  169.       }
  170.      
  171.       action = "menu";
  172.     } else if (buttonState == LOW && buttonPin[x] == 2) {
  173.     // PRZYCISK OK
  174.       action = "ok";
  175.     } else if (buttonState == LOW && buttonPin[x] == 5) {
  176.     // PRZYCISK W LEWO
  177.       action = "left";
  178.       if (!editing) {
  179.         menuStep--;
  180.         if (menuStep < 0) {
  181.           menuStep = 0;
  182.         }
  183.       }
  184.     }else if (buttonState == LOW && buttonPin[x] == 4) {
  185.     // PRZYCISK W PRAWO
  186.       action = "right";
  187.       if (!editing) {
  188.         menuStep++;
  189.         if (menuStep > 6) {
  190.           menuStep = 6;
  191.         }
  192.       }
  193.     }
  194.   }
  195.  
  196.   if (showMenu) {
  197.     menu(action, menuStep);
  198.   } else {
  199.     showWelcome();
  200.   }
  201.  
  202.   calcLighting();
  203.   delayLcdLight++;
  204.   delay(delayLoop);
  205. }
  206.  
  207. /**
  208.  * Funkcja obsługująca menu
  209.  */
  210. void menu(String action, int step)
  211. {
  212.   delayLoop = 200;
  213.   delayLcdLightCompare = 50;
  214.  
  215.   if (step == 0) {
  216.     lcd.setCursor(0,0);
  217.     lcd.print("##### MENU #####");
  218.     lcd.setCursor(0,1);
  219.     lcd.print("Wybierz:     <>");
  220.   } else if (step == 1) {
  221.     // poczatek dnia
  222.     lcd.setCursor(0,0);
  223.     lcd.print("Poczatek dnia: ");
  224.     lcd.setCursor(0,1);
  225.     if (editing) {
  226.       lcd.print(">");
  227.     } else {
  228.       lcd.print(" ");
  229.       tempM = dzienM;
  230.       tempG = dzienG;
  231.     }
  232.    
  233.     if (tempG < 10) {
  234.       lcd.print(0);
  235.     }
  236.     lcd.print(tempG);
  237.     lcd.print(":");
  238.     if (tempM < 10) {
  239.       lcd.print(0);
  240.     }
  241.     lcd.print(tempM);
  242.  
  243.     if (editing && action == "ok") {
  244.       editing = false;
  245.       dzienM = tempM;
  246.       dzienG = tempG;
  247.       EEPROM.write(EEPROM_ADDR_dzienM, dzienM);
  248.       EEPROM.write(EEPROM_ADDR_dzienG, dzienG);
  249. //int EEPROM_ADDR_ZMIANA = 10;
  250.       tempM = 0;
  251.       tempG = 0;
  252.       lcd.setCursor(0,1);
  253.       lcd.print(" ");
  254.       lcd.setCursor(14,1);
  255.       lcd.print("OK");
  256.     } else if (action == "ok") {
  257.       editing = true;
  258.     } else if (editing && (action == "left" || action == "right")) {
  259.       lcd.setCursor(0,1);
  260.       lcd.print(">");
  261.       if (action == "left") {
  262.           changeHour(false, 10);
  263.       } else {
  264.           changeHour(true, 10);
  265.       }
  266.     }
  267.   } else if (step == 2) {
  268.     // koniec dnia
  269.     lcd.setCursor(0,0);
  270.     lcd.print("Koniec dnia: ");
  271.     lcd.setCursor(0,1);
  272.     if (editing) {
  273.       lcd.print(">");
  274.     } else {
  275.       lcd.print(" ");
  276.       tempM = nocM;
  277.       tempG = nocG;
  278.     }
  279.    
  280.     if (tempG < 10) {
  281.       lcd.print(0);
  282.     }
  283.     lcd.print(tempG);
  284.     lcd.print(":");
  285.     if (tempM < 10) {
  286.       lcd.print(0);
  287.     }
  288.     lcd.print(tempM);
  289.  
  290.     if (editing && action == "ok") {
  291.       editing = false;
  292.       nocM = tempM;
  293.       nocG = tempG;
  294.       EEPROM.write(EEPROM_ADDR_nocM, nocM);
  295.       EEPROM.write(EEPROM_ADDR_nocG, nocG);
  296.      
  297.       tempM = 0;
  298.       tempG = 0;
  299.       lcd.setCursor(0,1);
  300.       lcd.print(" ");
  301.       lcd.setCursor(14,1);
  302.       lcd.print("OK");
  303.     } else if (action == "ok") {
  304.       editing = true;
  305.     } else if (editing && (action == "left" || action == "right")) {
  306.       lcd.setCursor(0,1);
  307.       lcd.print(">");
  308.       if (action == "left") {
  309.           changeHour(false, 10);
  310.       } else {
  311.           changeHour(true, 10);
  312.       }
  313.     }
  314.   } else if (step == 3) {
  315.     // długość świtu/zmroku
  316.     lcd.setCursor(0,0);
  317.     lcd.print("Dl switu/zmroku: ");
  318.     lcd.setCursor(0,1);
  319.     if (editing) {
  320.       lcd.print(">");
  321.     } else {
  322.       lcd.print(" ");
  323.       tempNumber = ZMIANA;
  324.     }
  325.    
  326.     lcd.print(tempNumber);
  327.  
  328.     if (editing && action == "ok") {
  329.       editing = false;
  330.       ZMIANA = tempNumber;
  331.       EEPROM.write(EEPROM_ADDR_ZMIANA, ZMIANA);
  332.       tempNumber = 0;
  333.       lcd.setCursor(0,1);
  334.       lcd.print(" ");
  335.       lcd.setCursor(14,1);
  336.       lcd.print("OK");
  337.     } else if (action == "ok") {
  338.       editing = true;
  339.     } else if (editing && (action == "left" || action == "right")) {
  340.       lcd.setCursor(0,1);
  341.       lcd.print(">");
  342.       if (action == "left") {
  343.           changeNumber(false, 10, 60);
  344.       } else {
  345.           changeNumber(true, 10, 60);
  346.       }
  347.     }
  348.   } else if (step == 4) {
  349.     // moc kanałów w dzień
  350.     lcd.setCursor(0,0);
  351.     lcd.print("MOC LED dzien %");
  352.     lcd.setCursor(0,1);
  353.     lcd.print(" ");
  354.     lcd.print("W");
  355.     lcd.print(POWER_STEP_WHITE[MAX_WHITE]);
  356.     lcd.print(" ");
  357.     lcd.setCursor(6,1);
  358.     lcd.print("F");
  359.     lcd.print(POWER_STEP[MAX_FS]);
  360.     lcd.print(" ");
  361.     lcd.setCursor(11,1);
  362.     lcd.print("B");
  363.     lcd.print(POWER_STEP[MAX_BL]);
  364.    
  365.     if (editing && action == "ok") {
  366.       if (!subEditing) {
  367.         subEditing = true;
  368.       } else {
  369.         subEditing = false;
  370.       }
  371.     } else if (action == "ok") {
  372.       editing = true;
  373.     } else if (subEditing && (action == "left" || action == "right")) {
  374.       changeChannelValue(action, MAX_WHITE, MAX_FS, MAX_BL, step);
  375.     } else if (editing && (action == "left" || action == "right")) {
  376.       ledChannelSelect(action);
  377.     }
  378.  
  379.     if (editing && subEditing) {
  380.       ledLcdCursor('x');
  381.     } else if (editing) {
  382.       ledLcdCursor('>');
  383.     }
  384.   } else if (step == 5) {
  385.     // moc kanałów w dzień
  386.     lcd.setCursor(0,0);
  387.     lcd.print("MOC LED noc <=255");
  388.     lcd.setCursor(0,1);
  389.     lcd.print(" ");
  390.     lcd.print("W");
  391.     lcd.print(POWER_STEP_WHITE[MAX_NIGHT_WHITE]);
  392.     lcd.setCursor(6,1);
  393.     lcd.print("F");
  394.     lcd.print(POWER_STEP[MAX_NIGHT_FS]);
  395.     lcd.print(" ");
  396.     lcd.setCursor(11,1);
  397.     lcd.print("B");
  398.     lcd.print(POWER_STEP[MAX_NIGHT_BL]);
  399.    
  400.     if (editing && action == "ok") {
  401.       if (!subEditing) {
  402.         subEditing = true;
  403.       } else {
  404.         subEditing = false;
  405.         channelSelect = 0;
  406.       }
  407.     } else if (action == "ok") {
  408.       editing = true;
  409.     } else if (subEditing && (action == "left" || action == "right")) {
  410.       changeChannelValue(action, MAX_NIGHT_WHITE, MAX_NIGHT_FS, MAX_NIGHT_BL, step);
  411.     } else if (editing && (action == "left" || action == "right")) {
  412.       ledChannelSelect(action);
  413.     }
  414.  
  415.     if (editing && subEditing) {
  416.       ledLcdCursor('x');
  417.     } else if (editing) {
  418.       ledLcdCursor('>');
  419.     }
  420.   } else if (step == 6) {
  421.     // ustawienie zegara
  422.     lcd.setCursor(0,0);
  423.     lcd.print("Ustawienie godziny");
  424.     lcd.setCursor(0,1);
  425.     if (editing) {
  426.       lcd.print(">");
  427.       if (tempG < 10) {
  428.         lcd.print(0);
  429.       }
  430.       lcd.print(tempG);
  431.       if (tempM < 10) {
  432.         lcd.print(0);
  433.       }
  434.       lcd.print(":");
  435.       lcd.print(tempM);
  436.      
  437.     } else {
  438.       lcd.print(" ");
  439.       if (GODZ < 10) {
  440.         lcd.print(0);
  441.       }
  442.       lcd.print(GODZ);
  443.       if (MIN < 10) {
  444.         lcd.print(0);
  445.       }
  446.       lcd.print(":");
  447.       lcd.print(MIN);
  448.     }
  449.     if (editing && action == "ok") {
  450.       editing = false;
  451.       lcd.setCursor(14,1);
  452.       lcd.print("OK");
  453.       GODZ = tempG;
  454.       MIN = tempM;
  455.       setTime(GODZ,MIN,second(),day(),month(),year());
  456.       RTC.set(now());
  457.     } else if (action == "ok") {
  458.       editing = true;
  459.       tempM = MIN;
  460.       tempG = GODZ;
  461.     } else if (editing && (action == "left" || action == "right")) {
  462.       if (action == "left") {
  463.           changeHour(false, 1);
  464.       } else {
  465.           changeHour(true, 1);
  466.       }
  467.     }
  468.   }
  469. }
  470.  
  471. /**
  472.  * Funkcja zmienia ustawione wartości dla kanału LED i zapisuje je do EEPROM.
  473.  */
  474. void changeChannelValue(String action, int white, int fs, int bl, int step)
  475. {
  476.   int channel = white;
  477.   if (channelSelect == 1) {
  478.     channel = fs;
  479.   } else if (channelSelect == 2) {
  480.     channel = bl;
  481.   }
  482.  
  483.   if (action == "left" && (channel-1) <= 60) {
  484.     channel++;
  485.   } else if (action == "right" && (channel-1) >= 0) {
  486.     channel--;
  487.   }
  488.  
  489.   if (step == 4) {
  490.     if (channelSelect == 1) {
  491.       MAX_FS = channel;
  492.       EEPROM.write(EEPROM_ADDR_MAX_FS, MAX_FS);
  493.     } else if (channelSelect == 2) {
  494.       MAX_BL = channel;
  495.       EEPROM.write(EEPROM_ADDR_MAX_BL, MAX_BL);
  496.     } else {
  497.       MAX_WHITE = channel;
  498.       EEPROM.write(EEPROM_ADDR_MAX_WHITE, MAX_WHITE);
  499.     }
  500.   } else {
  501.     if (channelSelect == 1) {
  502.       MAX_NIGHT_FS = channel;
  503.       EEPROM.write(EEPROM_ADDR_MAX_NIGHT_FS, MAX_NIGHT_FS);
  504.     } else if (channelSelect == 2) {
  505.       MAX_NIGHT_BL = channel;
  506.       EEPROM.write(EEPROM_ADDR_MAX_NIGHT_BL, MAX_NIGHT_BL);
  507.     } else {
  508.       MAX_NIGHT_WHITE = channel;
  509.       EEPROM.write(EEPROM_ADDR_MAX_NIGHT_WHITE, MAX_NIGHT_WHITE);
  510.     }
  511.   }
  512. }
  513.  
  514. /**
  515.  * Funkcja ustawia zaznaczony kanał LED do edycji
  516.  */
  517. void ledChannelSelect(String action)
  518. {
  519.   if (action == "left") {
  520.     channelSelect--;
  521.   } else {
  522.     channelSelect++;
  523.   }
  524.   if (channelSelect > 2) {
  525.     channelSelect = 0;
  526.   } else if (channelSelect < 0 ){
  527.     channelSelect = 2;
  528.   }
  529. }
  530.  
  531. /**
  532.  * Funkcja ustawia kursor podczas edycji kanałów led
  533.  */
  534. void ledLcdCursor(char what)
  535. {
  536.   switch (channelSelect) {
  537.     case 0:
  538.       lcd.setCursor(0,1);
  539.       break;
  540.     case 1:
  541.       lcd.setCursor(5,1);
  542.       break;
  543.     case 2:
  544.       lcd.setCursor(10,1);
  545.       break;
  546.   }
  547.   lcd.print(what);
  548. }
  549.  
  550. /**
  551.  * Funkcja odpowiadająca za wyświetlanie informacji na ekranie domowym
  552.  */
  553. void showWelcome(void)
  554. {
  555.   delayLoop = 1000;
  556.   delayLcdLightCompare = 10;
  557.   GODZ = hour();
  558.   MIN = minute();
  559.   SEC = second();
  560.   lcd.setCursor(0,0);
  561.   if(GODZ < 10){
  562.     lcd.print(0);
  563.   }
  564.   lcd.print(GODZ);
  565.   lcd.setCursor(2,0);
  566.   lcd.print(':');
  567.   if(MIN < 10){
  568.     lcd.print(0);
  569.   }
  570.   lcd.print(MIN);
  571.   lcd.print(':');
  572.   if(SEC < 10){
  573.     lcd.print(0);
  574.   }
  575.   lcd.print(SEC);
  576.   lcd.print(" ");
  577.   lcd.print(DAY);
  578.  
  579.   lcd.setCursor(0,1);
  580.   lcd.print("  ");
  581.   lcd.print("W");
  582.   lcd.print(POWER_STEP_WHITE[DWHITE]);
  583.   lcd.setCursor(7,1);
  584.   lcd.print("F");
  585.   lcd.print(POWER_STEP[DFS]);
  586.   lcd.setCursor(12,1);
  587.   lcd.print("B");
  588.   lcd.print(POWER_STEP[DBL]);
  589. }
  590.  
  591. /**
  592.  * Funkcja zmienia godzine
  593.  */
  594. void changeNumber(bool add, int limitFrom, int limitTo)
  595. {
  596.   int increment = 1;
  597.   if (add) {
  598.     tempNumber+=increment;
  599.   } else {
  600.     tempNumber-=increment;
  601.   }
  602.  
  603.   if (tempNumber >= limitTo) {
  604.     tempNumber = limitFrom;
  605.   } else if(tempNumber < limitFrom) {
  606.     tempNumber = limitTo;
  607.   }
  608. }
  609.  
  610. /**
  611.  * Funkcja zmienia godzine
  612.  */
  613. void changeHour(bool add, int increment)
  614. {
  615.   if (add) {
  616.     tempM+=increment;
  617.   } else {
  618.     tempM-=increment;
  619.   }
  620.  
  621.   if (tempM >= 60) {
  622.       tempM = 0;
  623.       tempG++;
  624.   } else if (tempM < 0) {
  625.     tempM = 50;
  626.     tempG--;
  627.   }
  628.  
  629.   if (tempG >= 24) {
  630.     tempG = 1;
  631.   } else if(tempG < 1) {
  632.     tempG = 23;
  633.   }
  634. }
  635.  
  636. /**
  637.  * Funkcja obliczajaca natezenie LED
  638.  */
  639. void calcLighting(void)
  640. {    
  641.   int CZAS = (GODZ*60+MIN);    //aktualna godzina
  642.   int czas1 = (dzienG*60+dzienM);    //początek dnia
  643.   int czas2 = (nocG*60+nocM);    //początek nocy
  644.  
  645.   if (CZAS<czas1) {
  646.     DWHITE=MAX_NIGHT_WHITE;
  647.     DFS=MAX_NIGHT_FS;
  648.     DBL=MAX_NIGHT_BL;
  649.     DAY = "NOC";
  650.   } else if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA))) {
  651.     DWHITE=60 - (CZAS-czas1)/STEP;
  652.     if (DWHITE < MAX_WHITE) {
  653.       DWHITE = MAX_WHITE;
  654.     } else if (DWHITE > MAX_NIGHT_WHITE) {
  655.       DWHITE = MAX_NIGHT_WHITE;
  656.     }
  657.    
  658.     DFS=60 - (CZAS-czas1)/STEP;
  659.     if (DFS < MAX_FS) {
  660.       DFS = MAX_FS;
  661.     } else if (DFS > MAX_NIGHT_FS) {
  662.       DFS = MAX_NIGHT_FS;
  663.     }
  664.    
  665.     DBL=60 -(CZAS-czas1)/STEP;
  666.     if (DBL < MAX_BL) {
  667.       DBL = MAX_BL;
  668.     } else if (DBL > MAX_NIGHT_BL) {
  669.       DBL = MAX_NIGHT_BL;
  670.     }
  671.     DAY = "SWIT";
  672.   } else if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA))) {
  673.     DWHITE=MAX_WHITE;
  674.     DFS=MAX_FS;
  675.     DBL=MAX_BL;
  676.     DAY = "DZIEN";
  677.   } else if(((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2)) {
  678.     DWHITE=60 - (czas2-CZAS)/STEP;
  679.     if (MAX_NIGHT_WHITE < DWHITE) {
  680.       DWHITE = MAX_NIGHT_WHITE;
  681.     } else if (MAX_WHITE > DWHITE) {
  682.       DWHITE = MAX_WHITE;
  683.     }
  684.    
  685.     DFS=60 - (czas2-CZAS)/STEP;
  686.     if (MAX_NIGHT_FS < DFS) {
  687.       DFS = MAX_NIGHT_FS;
  688.     } else if (MAX_FS > DFS) {
  689.       DFS = MAX_FS;
  690.     }
  691.    
  692.     DBL=60 - (czas2-CZAS)/STEP;
  693.     if (MAX_NIGHT_BL < DBL) {
  694.       DBL = MAX_NIGHT_BL;
  695.     } else if (MAX_BL > DBL) {
  696.       DBL = MAX_BL;
  697.     }
  698.    
  699.     DAY = "ZMROK";
  700.   } else if(czas2<=CZAS) {
  701.     DWHITE=MAX_NIGHT_WHITE;
  702.     DFS=MAX_NIGHT_FS;
  703.     DBL=MAX_NIGHT_BL;
  704.     DAY = "NOC";
  705.   }
  706.   analogWrite(LEDWHITE, (POWER_STEP_WHITE[DWHITE] - 255) * -1);
  707.   analogWrite(LEDFS, POWER_STEP[DFS]);
  708.   analogWrite(LEDBL, POWER_STEP[DBL]);
  709. }
  710.  
  711. /**
  712.  * Funkcja pobiera ustawienia z EEPROM i ustawia do zmiennych systemowych
  713.  */
  714. void getEEPROMSettings(void)
  715. {
  716.   // day
  717.   int value = EEPROM.read(EEPROM_ADDR_MAX_WHITE);
  718.   if (value != 255) {
  719.     MAX_WHITE = value;
  720.   }
  721.   value = EEPROM.read(EEPROM_ADDR_MAX_FS);
  722.   if (value != 255) {
  723.     MAX_FS = value;
  724.   }
  725.   value = EEPROM.read(EEPROM_ADDR_MAX_BL);
  726.   if (value != 255) {
  727.     MAX_BL = value;
  728.   }
  729.  
  730.   value = EEPROM.read(EEPROM_ADDR_MAX_NIGHT_WHITE);
  731.   if (value != 255) {
  732.     MAX_NIGHT_WHITE = value;
  733.   }
  734.   value = EEPROM.read(EEPROM_ADDR_MAX_NIGHT_FS);
  735.   if (value != 255) {
  736.     MAX_NIGHT_FS = value;
  737.   }
  738.   value = EEPROM.read(EEPROM_ADDR_MAX_NIGHT_BL);
  739.   if (value != 255) {
  740.     MAX_NIGHT_BL = value;
  741.   }
  742.  
  743.   value = EEPROM.read(EEPROM_ADDR_dzienG);
  744.   if (value != 255) {
  745.     dzienG = value;
  746.   }
  747.   value = EEPROM.read(EEPROM_ADDR_dzienM);
  748.   if (value != 255) {
  749.     dzienM = value;
  750.   }
  751.   value = EEPROM.read(EEPROM_ADDR_nocG);
  752.   if (value != 255) {
  753.     nocG = value;
  754.   }
  755.   value = EEPROM.read(EEPROM_ADDR_nocM);
  756.   if (value != 255) {
  757.     nocM = value;
  758.   }
  759.   value = EEPROM.read(EEPROM_ADDR_ZMIANA);
  760.   if (value != 255) {
  761.     ZMIANA = value;
  762.   }
  763. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement