#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
struct UB_24760541
{
String ubo_98898145 = "";
int _gtv6 = 0;
String _gtv1 = "";
String _swi1 = "";
}
;
UB_24760541 UB_24760541_Instance4;
UB_24760541 UB_24760541_Instance5;
int UB_24760541_ubi_200586030 = 0;
const int _menuParametrsArray[] PROGMEM = {1, 3, 2, 0, 0, 0, 14, 15, 1, 8, 5, 0, 2, 4, 2, 0, 0, 0, 2, 6, 1, 4, 3, 0, 3, 4, 5, 0, 0, 0, 5, 6, 1, 4, 12, 0, 4, 4, 4, 0, 0, 0, 4, 1, 1, 4, 10, 0, 5, 4, 3, 0, 0, 0, 3, 6, 1, 4, 4, 0, 6, 3, 8, 0, 0, 0, 0, 0, 1, 1, 13, 0, 7, 3, 7, 0, 0, 0, 0, 0, 1, 1, 11, 0, 8, 3, 3, 0, 0, 0, 0, 0, 1, 1, 6, 0, 9, 3, 4, 0, 0, 0, 0, 0, 1, 1, 7, 0, 10, 3, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 11, 3, 5, 0, 0, 0, 0, 0, 1, 1, 8, 0, 12, 3, 6, 0, 0, 0, 0, 0, 1, 1, 9, 0, 13, 4, 1, 0, 0, 0, 2, 6, 1, 4, 2, 0};
bool _menuValueArray_bool[8];
const bool _menuConstantValuesArray_bool[] PROGMEM = {1, 0};
int _menuValueArray_int[5];
const int _menuConstantValuesArray_int[] PROGMEM = {1, 23, 500, 7, 59, 0};
const char _flprogMenuNameString1[] PROGMEM = "Dow 5";
const char _flprogMenuNameString2[] PROGMEM = "Alarm H";
const char _flprogMenuNameString3[] PROGMEM = "Hour";
const char _flprogMenuNameString4[] PROGMEM = "Alarm min";
const char _flprogMenuNameString5[] PROGMEM = "R";
const char _flprogMenuNameString6[] PROGMEM = "Dow 3";
const char _flprogMenuNameString7[] PROGMEM = "Dow 4";
const char _flprogMenuNameString8[] PROGMEM = "Dow 6";
const char _flprogMenuNameString9[] PROGMEM = "Dow 7";
const char _flprogMenuNameString10[] PROGMEM = "DOW";
const char _flprogMenuNameString11[] PROGMEM = "Dow 2";
const char _flprogMenuNameString12[] PROGMEM = "Minut";
const char _flprogMenuNameString13[] PROGMEM = "Dow 1";
const char _flprogMenuNameString14[] PROGMEM = "ON";
const char _flprogMenuNameString15[] PROGMEM = "OFF";
const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11, _flprogMenuNameString12, _flprogMenuNameString13, _flprogMenuNameString14, _flprogMenuNameString15};
struct _menuItemStricture
{
int startInArrayIndex;
}
;
struct _menuMainStricture
{
int startIndex;
int stopIndex;
bool isSwitchMenuAroundRing;
_menuItemStricture currentItem;
}
;
_menuItemStricture _MenuItems[13];
_menuMainStricture _MainMenus[1];
struct _I2CRealRimeClockTime
{
byte seconds = 0;
byte minutes = 0;
byte Hours = 0;
byte weekday = 0;
byte day = 0;
byte month = 0;
byte year = 0;
unsigned long startTime = 0;
}
;
_I2CRealRimeClockTime _RTC1;
bool _gtv1 = 0;
bool _gtv2 = 0;
bool _gtv3 = 0;
bool _gtv4 = 0;
bool _gtv5 = 0;
bool _gtv6 = 0;
bool _gtv7 = 0;
bool _gtv8 = 0;
byte _gtv9;
byte _gtv10;
bool _gtv14;
bool _gtv15 = 0;
bool _gtv17 = 0;
bool _gtv11 = 0;
bool _gtv12 = 0;
bool _gtv13 = 0;
byte _gtv18;
bool _gtv19 = 0;
bool _changeNumber5_Out = 0;
int _changeNumber5_OLV;
String _swi3;
bool _tim2I = 0;
bool _tim2O = 0;
unsigned long _tim2P = 0UL;
String _swi12;
bool _bounseInputD0S = 0;
bool _bounseInputD0O = 0;
unsigned long _bounseInputD0P = 0UL;
String _swi10;
int _disp6oldLength = 0;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _bounseInputD2S = 0;
bool _bounseInputD2O = 0;
unsigned long _bounseInputD2P = 0UL;
String _swi9;
String _swi20;
byte _swi22;
bool _trgrt5 = 0;
bool _trgrt5I = 0;
int _disp3oldLength = 0;
int _disp5oldLength = 0;
bool _trgrt3 = 0;
bool _trgrt3I = 0;
String _swi13;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
bool _tim3I = 0;
bool _tim3O = 0;
unsigned long _tim3P = 0UL;
String _swi8;
String _swi6;
byte _swi21;
bool _bounseInputD1S = 0;
bool _bounseInputD1O = 0;
unsigned long _bounseInputD1P = 0UL;
bool _changeNumber1_Out = 0;
byte _changeNumber1_OLV;
bool _changeNumber6_Out = 0;
int _changeNumber6_OLV;
String _swi14;
bool _RTCST_Ost1 = 0;
int _disp1oldLength = 0;
bool _trgrt7 = 0;
bool _trgrt7I = 0;
String _swi11;
byte _swi24;
String _swi19;
String _swi1;
String _swi18;
bool _trgrt6 = 0;
bool _trgrt6I = 0;
byte _swi23;
String _swi15;
bool _trgrt2 = 0;
bool _trgrt2I = 0;
byte _swi27;
bool _trgrt8 = 0;
bool _trgrt8I = 0;
String _swi2;
String _swi4;
byte _swi26;
String _swi16;
String _swi5;
byte _RTC1_GetTime1_HourOut = 0;
byte _RTC1_GetTime1_MinOut = 0;
byte _RTC1_GetTime1_SecOut = 0;
byte _RTC1_GetTime1_DowOut = 0;
bool _MenuBlock_325518631_AMO_530385443 = 0;
bool _MenuBlock_325518631_AMO_193935864 = 0;
bool _MenuBlock_325518631_AMO_75353440 = 0;
bool _MenuBlock_325518631_AMO_480429529 = 0;
bool _MenuBlock_325518631_AMO_316133444 = 0;
bool _MenuBlock_325518631_AMO_392541840 = 0;
bool _MenuBlock_325518631_AMO_29467837 = 0;
bool _MenuBlock_325518631_AMO_66110718 = 0;
bool _MenuBlock_325518631_AMO_241811727 = 0;
bool _MenuBlock_325518631_AMO_61735029 = 0;
bool _MenuBlock_325518631_AMO_129607167 = 0;
bool _MenuBlock_325518631_AMO_482514435 = 0;
bool _MenuBlock_325518631_AMO_442264338 = 0;
String _MenuBlock_325518631_MNO;
String _MenuBlock_325518631_VNO;
bool _MenuBlock_325518631_OEIS = 0;
bool _MenuBlock_325518631_OMUIS = 0;
bool _MenuBlock_325518631_OMDIS = 0;
bool _MenuBlock_325518631_OVUIS = 0;
bool _MenuBlock_325518631_OVDIS = 0;
byte _swi25;
bool _tim4I = 0;
bool _tim4O = 0;
unsigned long _tim4P = 0UL;
int _disp2oldLength = 0;
bool _changeNumber2_Out = 0;
int _changeNumber2_OLV;
bool _trgrt4 = 0;
bool _trgrt4I = 0;
String _swi17;
int _disp4oldLength = 0;
String _swi7;
bool _D1B1 = 0;
bool _tempVariable_bool;
byte _tempVariable_byte;
int _tempVariable_int;
void setup()
{
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
digitalWrite(13, 0);
pinMode(12, OUTPUT);
digitalWrite(12, 0);
Wire.begin();
delay(10);
if(((readByteFromEEPROM(0, 0, 0x0))) != 163)
{
(updateByteToEEPROM(0, 0, 0x0, (163)));
(updateBooleanToEEPROM(1, 1, 0x0, (0)));
(updateIntegerToEEPROM(2, 0, 0x0, (19)));
(updateIntegerToEEPROM(4, 0, 0x0, (0)));
}
Wire.beginTransmission(68);
Wire.write(0x0E);
Wire.write(B00000000);
Wire.write(B10001000);
Wire.endTransmission();
_RTC1.startTime = millis() - 1000;
_lcd1.init();
_lcd1.noBacklight();
_bounseInputD2O = digitalRead(2);
_bounseInputD0O = digitalRead(0);
_bounseInputD1O = digitalRead(1);
_MenuItems[0].startInArrayIndex = 0;
_MenuItems[1].startInArrayIndex = 12;
_MenuItems[2].startInArrayIndex = 24;
_MenuItems[3].startInArrayIndex = 36;
_MenuItems[4].startInArrayIndex = 48;
_MenuItems[5].startInArrayIndex = 60;
_MenuItems[6].startInArrayIndex = 72;
_MenuItems[7].startInArrayIndex = 84;
_MenuItems[8].startInArrayIndex = 96;
_MenuItems[9].startInArrayIndex = 108;
_MenuItems[10].startInArrayIndex = 120;
_MenuItems[11].startInArrayIndex = 132;
_MenuItems[12].startInArrayIndex = 144;
_MainMenus[0].startIndex = 1;
_MainMenus[0].isSwitchMenuAroundRing = 1;
_MainMenus[0].stopIndex = 13;
_MainMenus[0].currentItem = _MenuItems[0];
_menuValueArray_bool[0] = (readBooleanFromEEPROM(1, 0, 0x0));
_menuValueArray_int[0] = (readIntegerFromEEPROM(2, 0, 0x0));
_menuValueArray_int[2] = (readIntegerFromEEPROM(4, 0, 0x0));
_menuValueArray_bool[1] = (readBooleanFromEEPROM(1, 1, 0x0));
_menuValueArray_bool[2] = (readBooleanFromEEPROM(1, 2, 0x0));
_menuValueArray_bool[3] = (readBooleanFromEEPROM(1, 3, 0x0));
_menuValueArray_bool[4] = (readBooleanFromEEPROM(1, 4, 0x0));
_menuValueArray_bool[5] = (readBooleanFromEEPROM(1, 5, 0x0));
_menuValueArray_bool[6] = (readBooleanFromEEPROM(1, 6, 0x0));
_menuValueArray_bool[7] = (readBooleanFromEEPROM(1, 7, 0x0));
}
void loop()
{
if (_isNeedClearDisp1)
{
_lcd1.clear();
_isNeedClearDisp1= 0;
}
bool _bounceInputTmpD0 = (digitalRead (0));
if (_bounseInputD0S)
{
if (millis() >= (_bounseInputD0P + 40))
{
_bounseInputD0O= _bounceInputTmpD0;
_bounseInputD0S=0;
}
}
else
{
if (_bounceInputTmpD0 != _bounseInputD0O)
{
_bounseInputD0S=1;
_bounseInputD0P = millis();
}
}
bool _bounceInputTmpD2 = (digitalRead (2));
if (_bounseInputD2S)
{
if (millis() >= (_bounseInputD2P + 40))
{
_bounseInputD2O= _bounceInputTmpD2;
_bounseInputD2S=0;
}
}
else
{
if (_bounceInputTmpD2 != _bounseInputD2O)
{
_bounseInputD2S=1;
_bounseInputD2P = millis();
}
}
bool _bounceInputTmpD1 = (digitalRead (1));
if (_bounseInputD1S)
{
if (millis() >= (_bounseInputD1P + 40))
{
_bounseInputD1O= _bounceInputTmpD1;
_bounseInputD1S=0;
}
}
else
{
if (_bounceInputTmpD1 != _bounseInputD1O)
{
_bounseInputD1S=1;
_bounseInputD1P = millis();
}
}
//Плата:1
//Наименование:Блок меню
if (!(0))
{
if (_trgrt8I)
{
_trgrt8 = 0;
}
else
{
_trgrt8 = 1;
_trgrt8I = 1;
}
}
else
{
_trgrt8 = 0;
_trgrt8I = 0;
}
;
if (((!(_bounseInputD0O)) || (!(_bounseInputD1O)) || (!(_bounseInputD2O)) || (_trgrt8)))
{
if (_trgrt5I)
{
_trgrt5 = 0;
}
else
{
_trgrt5 = 1;
_trgrt5I = 1;
}
}
else
{
_trgrt5 = 0;
_trgrt5I = 0;
}
;
if(_trgrt5)
{
_tim4O = 1;
_tim4I = 1;
}
else
{
if(_tim4I)
{
_tim4I = 0;
_tim4P = millis();
}
else
{
if (_tim4O)
{
if (_isTimer(_tim4P, 60000)) _tim4O = 0;
}
}
}
if(_tim4O)
{
if(! _D1B1)
{
_lcd1.backlight();
_D1B1=1;
}
}
else
{
if(_D1B1)
{
_lcd1.noBacklight();
_D1B1=0;
}
}
if (((_bounseInputD0O) && (_bounseInputD1O) && (_bounseInputD2O)))
{
if (_tim1I)
{
if (_isTimer(_tim1P, 5000))
{
_tim1O = 1;
}
}
else
{
_tim1I =1;
_tim1P = millis();
}
}
else
{
_tim1O = 0;
_tim1I = 0;
}
if (_tim1O)
{
if (_trgrt1I)
{
_trgrt1 = 0;
}
else
{
_trgrt1 = 1;
_trgrt1I = 1;
}
}
else
{
_trgrt1 = 0;
_trgrt1I = 0;
}
;
if (!(0))
{
_tempVariable_bool = 1;
if (! _MenuBlock_325518631_OEIS)
{
_MenuBlock_325518631_OEIS = 1;
}
_tempVariable_int = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem).startInArrayIndex)+10]);
_MenuBlock_325518631_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_int - 1])));
_MenuBlock_325518631_VNO = _menuOutputValueString (0);
_MenuBlock_325518631_AMO_530385443 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 1;
_MenuBlock_325518631_AMO_193935864 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 10;
_MenuBlock_325518631_AMO_75353440 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 11;
_MenuBlock_325518631_AMO_480429529 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 12;
_MenuBlock_325518631_AMO_316133444 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 13;
_MenuBlock_325518631_AMO_392541840 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 2;
_MenuBlock_325518631_AMO_29467837 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 3;
_MenuBlock_325518631_AMO_66110718 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 4;
_MenuBlock_325518631_AMO_241811727 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 5;
_MenuBlock_325518631_AMO_61735029 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 6;
_MenuBlock_325518631_AMO_129607167 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 7;
_MenuBlock_325518631_AMO_482514435 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 8;
_MenuBlock_325518631_AMO_442264338 = pgm_read_byte(&_menuParametrsArray[(_MainMenus[0].currentItem).startInArrayIndex]) == 9;
}
else
{
_tempVariable_bool = 0;
if (_MenuBlock_325518631_OEIS)
{
_MenuBlock_325518631_OEIS = 0;
_menuUpdateToEEpromItems();
}
_MenuBlock_325518631_AMO_530385443 = 0;
_MenuBlock_325518631_AMO_193935864 = 0;
_MenuBlock_325518631_AMO_75353440 = 0;
_MenuBlock_325518631_AMO_480429529 = 0;
_MenuBlock_325518631_AMO_316133444 = 0;
_MenuBlock_325518631_AMO_392541840 = 0;
_MenuBlock_325518631_AMO_29467837 = 0;
_MenuBlock_325518631_AMO_66110718 = 0;
_MenuBlock_325518631_AMO_241811727 = 0;
_MenuBlock_325518631_AMO_61735029 = 0;
_MenuBlock_325518631_AMO_129607167 = 0;
_MenuBlock_325518631_AMO_482514435 = 0;
_MenuBlock_325518631_AMO_442264338 = 0;
_MenuBlock_325518631_MNO = "";
_MenuBlock_325518631_VNO = "";
}
if(0)
{
if (! _MenuBlock_325518631_OMUIS)
{
_MenuBlock_325518631_OMUIS = 1;
if(_tempVariable_bool)
{
_menuUpEvents(0);
_menuUpdateToEEpromItems();
}
}
}
else
{
_MenuBlock_325518631_OMUIS = 0;
}
if(!(_bounseInputD0O))
{
if (! _MenuBlock_325518631_OMDIS)
{
_MenuBlock_325518631_OMDIS = 1;
if(_tempVariable_bool)
{
_menuDownEvents(0);
_menuUpdateToEEpromItems();
}
}
}
else
{
_MenuBlock_325518631_OMDIS = 0;
}
if(!(_bounseInputD1O))
{
if (! _MenuBlock_325518631_OVUIS)
{
_MenuBlock_325518631_OVUIS = 1;
if(_tempVariable_bool)
{
_valueUpEvents(0);
}
}
}
else
{
_MenuBlock_325518631_OVUIS = 0;
}
if(!(_bounseInputD2O))
{
if (! _MenuBlock_325518631_OVDIS)
{
_MenuBlock_325518631_OVDIS = 1;
if(_tempVariable_bool)
{
_valueDownEvents(0);
}
}
}
else
{
_MenuBlock_325518631_OVDIS = 0;
}
if(_trgrt1)
{
if (_tempVariable_bool)
{
(_MainMenus[0]).currentItem = _MenuItems[0];
_menuUpdateToEEpromItems();
}
}
_gtv17 = _MenuBlock_325518631_AMO_442264338;
_gtv8 = _MenuBlock_325518631_AMO_482514435;
_gtv7 = _MenuBlock_325518631_AMO_129607167;
_gtv6 = _MenuBlock_325518631_AMO_61735029;
_gtv5 = _MenuBlock_325518631_AMO_241811727;
_gtv4 = _MenuBlock_325518631_AMO_66110718;
_gtv3 = _MenuBlock_325518631_AMO_29467837;
_gtv2 = _MenuBlock_325518631_AMO_392541840;
_gtv19 = _MenuBlock_325518631_AMO_316133444;
_gtv13 = _MenuBlock_325518631_AMO_480429529;
_gtv12 = _MenuBlock_325518631_AMO_75353440;
_gtv11 = _MenuBlock_325518631_AMO_193935864;
_gtv1 = _MenuBlock_325518631_AMO_530385443;
//Плата:2
//Наименование:Часы реального времени
get3231Date(0x68, &_RTC1);
_RTC1_GetTime1_HourOut = _RTC1.Hours;
_RTC1_GetTime1_MinOut = _RTC1.minutes;
_RTC1_GetTime1_SecOut = _RTC1.seconds;
_RTC1_GetTime1_DowOut = _RTC1.weekday;
_gtv18 = _RTC1_GetTime1_DowOut;
if (_changeNumber1_Out)
{
_changeNumber1_Out = 0;
}
else
{
_tempVariable_byte = _RTC1_GetTime1_SecOut;
if (_tempVariable_byte != _changeNumber1_OLV)
{
_changeNumber1_OLV = _tempVariable_byte;
_changeNumber1_Out = 1;
}
}
if(_changeNumber1_Out)
{
_tim2O = 1;
_tim2I = 1;
}
else
{
if(_tim2I)
{
_tim2I = 0;
_tim2P = millis();
}
else
{
if (_tim2O)
{
if (_isTimer(_tim2P, 500)) _tim2O = 0;
}
}
}
_gtv14 = _tim2O;
_gtv10 = _RTC1_GetTime1_MinOut;
_gtv9 = _RTC1_GetTime1_HourOut;
UB_24760541_ubi_200586030 = _gtv9;
_func_UB_24760541(&UB_24760541_Instance4, UB_24760541_ubi_200586030);
if(((_gtv14) && (_gtv2)))
{
_swi4=String(" ");
}
else
{
_swi4=UB_24760541_Instance4.ubo_98898145;
}
if(_gtv14)
{
_swi5=String(" ");
}
else
{
_swi5=String(":");
}
UB_24760541_ubi_200586030 = _gtv10;
_func_UB_24760541(&UB_24760541_Instance5, UB_24760541_ubi_200586030);
if(((_gtv14) && (_gtv3)))
{
_swi6=String(" ");
}
else
{
_swi6=UB_24760541_Instance5.ubo_98898145;
}
if(((_gtv14) && (_gtv4)))
{
_swi1=String(" ");
}
else
{
_swi1=(String(_gtv18, DEC));
}
if (!(0))
{
_dispTempLength1 = ((((_swi4) + (_swi5) + (_swi6) + (String(" ")) + (String("D ")) + (_swi1)))).length();
if (_disp1oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((((_swi4) + (_swi5) + (_swi6) + (String(" ")) + (String("D ")) + (_swi1))));
}
else
{
if (_disp1oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp1oldLength = 0;
}
}
//Плата:3
//Наименование:Уст часов
if (_gtv15)
{
if (_trgrt3I)
{
_trgrt3 = 0;
}
else
{
_trgrt3 = 1;
_trgrt3I = 1;
}
}
else
{
_trgrt3 = 0;
_trgrt3I = 0;
}
;
if(_trgrt3)
{
_menuValueArray_int[3] = _gtv18;
}
if (_changeNumber2_Out)
{
_changeNumber2_Out = 0;
}
else
{
_tempVariable_int = (_menuValueArray_int[3]);
if (_tempVariable_int != _changeNumber2_OLV)
{
_changeNumber2_OLV = _tempVariable_int;
_changeNumber2_Out = 1;
}
}
if (_gtv15)
{
if (_trgrt7I)
{
_trgrt7 = 0;
}
else
{
_trgrt7 = 1;
_trgrt7I = 1;
}
}
else
{
_trgrt7 = 0;
_trgrt7I = 0;
}
;
if(_trgrt7)
{
_menuValueArray_int[4] = _gtv10;
}
if (_gtv15)
{
if (_trgrt6I)
{
_trgrt6 = 0;
}
else
{
_trgrt6 = 1;
_trgrt6I = 1;
}
}
else
{
_trgrt6 = 0;
_trgrt6I = 0;
}
;
if(_trgrt6)
{
_menuValueArray_int[1] = _gtv9;
}
if (_changeNumber5_Out)
{
_changeNumber5_Out = 0;
}
else
{
_tempVariable_int = (_menuValueArray_int[1]);
if (_tempVariable_int != _changeNumber5_OLV)
{
_changeNumber5_OLV = _tempVariable_int;
_changeNumber5_Out = 1;
}
}
if (_changeNumber6_Out)
{
_changeNumber6_Out = 0;
}
else
{
_tempVariable_int = (_menuValueArray_int[4]);
if (_tempVariable_int != _changeNumber6_OLV)
{
_changeNumber6_OLV = _tempVariable_int;
_changeNumber6_Out = 1;
}
}
if (((((_changeNumber2_Out) && (_gtv4))) || (((_changeNumber5_Out) && (_gtv2))) || (((_changeNumber6_Out) && (_gtv3)))))
{
if (!(_RTCST_Ost1))
{
set3231Date(0x68, &_RTC1, -1, ((_menuValueArray_int[4])), ((_menuValueArray_int[1])), -1, -1, -1, ((_menuValueArray_int[3])));
get3231Date(0x68, &_RTC1);
_RTCST_Ost1 = 1;
}
}
else
{
_RTCST_Ost1 = 0;
}
if (!(0))
{
if (_trgrt2I)
{
_trgrt2 = 0;
}
else
{
_trgrt2 = 1;
_trgrt2I = 1;
}
}
else
{
_trgrt2 = 0;
_trgrt2I = 0;
}
;
_gtv15 = ((_trgrt2) || (((((_changeNumber2_Out) && (_gtv4))) || (((_changeNumber5_Out) && (_gtv2))) || (((_changeNumber6_Out) && (_gtv3))))));
//Плата:4
//Наименование:Дни недели
if((_menuValueArray_bool[7]))
{
_swi2=String("1");
}
else
{
_swi2=String("_");
}
if(((_gtv14) && (_gtv6)))
{
_swi12=String(" ");
}
else
{
_swi12=_swi2;
}
if((_menuValueArray_bool[6]))
{
_swi3=String("2");
}
else
{
_swi3=String("_");
}
if(((_gtv14) && (_gtv7)))
{
_swi13=String(" ");
}
else
{
_swi13=_swi3;
}
if((_menuValueArray_bool[2]))
{
_swi7=String("3");
}
else
{
_swi7=String("_");
}
if(((_gtv14) && (_gtv8)))
{
_swi14=String(" ");
}
else
{
_swi14=_swi7;
}
if((_menuValueArray_bool[3]))
{
_swi8=String("4");
}
else
{
_swi8=String("_");
}
if(((_gtv14) && (_gtv17)))
{
_swi15=String(" ");
}
else
{
_swi15=_swi8;
}
if((_menuValueArray_bool[0]))
{
_swi9=String("5");
}
else
{
_swi9=String("_");
}
if(((_gtv14) && (_gtv11)))
{
_swi16=String(" ");
}
else
{
_swi16=_swi9;
}
if((_menuValueArray_bool[4]))
{
_swi10=String("6");
}
else
{
_swi10=String("_");
}
if(((_gtv14) && (_gtv12)))
{
_swi17=String(" ");
}
else
{
_swi17=_swi10;
}
if((_menuValueArray_bool[5]))
{
_swi11=String("7");
}
else
{
_swi11=String("_");
}
if(((_gtv14) && (_gtv13)))
{
_swi18=String(" ");
}
else
{
_swi18=_swi11;
}
if (!(0))
{
_dispTempLength1 = ((((_swi12) + (_swi13) + (_swi14) + (_swi15) + (_swi16) + (_swi17) + (_swi18)))).length();
if (_disp2oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((((_swi12) + (_swi13) + (_swi14) + (_swi15) + (_swi16) + (_swi17) + (_swi18))));
}
else
{
if (_disp2oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp2oldLength = 0;
}
}
//Плата:5
//Наименование:Время полива
if (!(0))
{
_dispTempLength1 = (String("H")).length();
if (_disp6oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp6oldLength = _dispTempLength1;
_lcd1.setCursor(10, 0);
_lcd1.print(String("H"));
}
else
{
if (_disp6oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp6oldLength = 0;
}
}
if(((_gtv14) && (_gtv19)))
{
_swi20=String(" ");
}
else
{
_swi20=(String((_menuValueArray_int[0]), DEC));
}
if (!(0))
{
_dispTempLength1 = ((_swi20)).length();
if (_disp4oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp4oldLength = _dispTempLength1;
_lcd1.setCursor(12, 0);
_lcd1.print((_swi20));
}
else
{
if (_disp4oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp4oldLength = 0;
}
}
if(((_gtv14) && (_gtv5)))
{
_swi19=String(" ");
}
else
{
_swi19=(String((_menuValueArray_int[2]), DEC));
}
if (!(0))
{
_dispTempLength1 = ((_swi19)).length();
if (_disp3oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp3oldLength = _dispTempLength1;
_lcd1.setCursor(9, 1);
_lcd1.print((_swi19));
}
else
{
if (_disp3oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp3oldLength = 0;
}
}
if (!(0))
{
_dispTempLength1 = (String("min")).length();
if (_disp5oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp5oldLength = _dispTempLength1;
_lcd1.setCursor(13, 1);
_lcd1.print(String("min"));
}
else
{
if (_disp5oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp5oldLength = 0;
}
}
if((_menuValueArray_bool[4]))
{
_swi26=6;
}
else
{
_swi26=0;
}
if((_menuValueArray_bool[0]))
{
_swi25=5;
}
else
{
_swi25=0;
}
if((_menuValueArray_bool[3]))
{
_swi24=4;
}
else
{
_swi24=0;
}
if((_menuValueArray_bool[2]))
{
_swi23=3;
}
else
{
_swi23=0;
}
if((_menuValueArray_bool[6]))
{
_swi22=2;
}
else
{
_swi22=0;
}
if((_menuValueArray_bool[5]))
{
_swi27=7;
}
else
{
_swi27=0;
}
if((_menuValueArray_bool[7]))
{
_swi21=1;
}
else
{
_swi21=0;
}
if ((((_gtv9) == ((_menuValueArray_int[0]))) && ((((_gtv18) == (_swi21)) || ((_gtv18) == (_swi22)) || ((_gtv18) == (_swi23)) || ((_gtv18) == (_swi24)) || ((_gtv18) == (_swi25)) || ((_gtv18) == (_swi26)) || ((_gtv18) == (_swi27))))))
{
if (_trgrt4I)
{
_trgrt4 = 0;
}
else
{
_trgrt4 = 1;
_trgrt4I = 1;
}
}
else
{
_trgrt4 = 0;
_trgrt4I = 0;
}
;
if(_trgrt4)
{
_tim3O = 1;
_tim3I = 1;
}
else
{
if(_tim3I)
{
_tim3I = 0;
_tim3P = millis();
}
else
{
if (_tim3O)
{
if (_isTimer(_tim3P, ((_menuValueArray_int[2]))*(60000UL))) _tim3O = 0;
}
}
}
digitalWrite(12, !(_tim3O));
digitalWrite(13, _tim3O);
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
{
return (currentTime>=(startTime + period));
}
else
{
return (currentTime >=(4294967295-startTime+period));
}
}
String _readStringFromProgmem (char *string)
{
String result = String("");
while (pgm_read_byte(string)!='\0')
{
result=result+ char(pgm_read_byte(string));
string++;
}
return result;
}
void _menuUpEvents (int menuIndex)
{
int tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);
int parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+5]);
int parentStartIndex;
int parentStopIndex;
if (parIndex == 0)
{
parentStartIndex = (_MainMenus[menuIndex]).startIndex;
parentStopIndex =(_MainMenus[menuIndex]).stopIndex;
}
else
{
parentStartIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex - 1]).startInArrayIndex)+3]);
parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex-1]).startInArrayIndex)+4]);
}
if (tempIndex == parentStartIndex)
{
if((_MainMenus[menuIndex]).isSwitchMenuAroundRing)
{
(_MainMenus[menuIndex]).currentItem = _MenuItems[parentStopIndex -1];
return;
}
else
{
return;
}
}
(_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex - 2];
return;
}
void _menuDownEvents (int menuIndex)
{
int tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);
int parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+5]);
int parentStartIndex;
int parentStopIndex;
if (parIndex == 0)
{
parentStartIndex = (_MainMenus[menuIndex]).startIndex;
parentStopIndex =(_MainMenus[menuIndex]).stopIndex;
}
else
{
parentStartIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex-1]).startInArrayIndex)+3]);
parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex-1]).startInArrayIndex)+4]);
}
if (tempIndex == parentStopIndex)
{
if((_MainMenus[menuIndex]).isSwitchMenuAroundRing)
{
(_MainMenus[menuIndex]).currentItem = _MenuItems[parentStartIndex -1];
return;
}
else
{
return;
}
}
(_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex];
return;
}
void _valueUpEvents (int menuIndex)
{
int valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);
int itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);
int indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+6]);
int indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+8]);
if(itemType ==3)
{
_menuValueArray_bool[valIndex - 1 ] = 1;
return;
}
if (itemType == 4)
{
if (! indexMax == 0)
{
if (! (int(pgm_read_word(&_menuConstantValuesArray_int[indexMax -1])) > int(_menuValueArray_int[valIndex -1])))
{
return;
}
}
_menuValueArray_int[valIndex -1] = _menuValueArray_int[valIndex -1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep -1]));
}
}
void _valueDownEvents (int menuIndex)
{
int valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);
int itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);
int indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+7]);
int indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+8]);
if(itemType ==3)
{
_menuValueArray_bool[valIndex -1] = 0;
return;
}
if (itemType == 4)
{
if (! indexMin == 0)
{
if (! ((int(pgm_read_word(&_menuConstantValuesArray_int[indexMin - 1]))) < int(_menuValueArray_int[valIndex - 1])))
{
return;
}
}
_menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1]));
}
}
String _menuOutputValueString (int menuIndex)
{
int itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);
int valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);
int indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+7]);
int indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+6]);
if(valIndex == 0)
{
return "";
}
int convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+9]);
if(itemType == 3)
{
return _convertBoolean(itemType, convFormat, valIndex, indexMax, indexMin);
}
if(itemType == 4)
{
return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);
}
return "";
}
void _menuUpdateToEEpromItems()
{
(updateBooleanToEEPROM(1, 0, 0x0, ((_menuValueArray_bool[0]))));
(updateIntegerToEEPROM(2, 0, 0x0, ((_menuValueArray_int[0]))));
(updateIntegerToEEPROM(4, 0, 0x0, ((_menuValueArray_int[2]))));
(updateBooleanToEEPROM(1, 1, 0x0, ((_menuValueArray_bool[1]))));
(updateBooleanToEEPROM(1, 2, 0x0, ((_menuValueArray_bool[2]))));
(updateBooleanToEEPROM(1, 3, 0x0, ((_menuValueArray_bool[3]))));
(updateBooleanToEEPROM(1, 4, 0x0, ((_menuValueArray_bool[4]))));
(updateBooleanToEEPROM(1, 5, 0x0, ((_menuValueArray_bool[5]))));
(updateBooleanToEEPROM(1, 6, 0x0, ((_menuValueArray_bool[6]))));
(updateBooleanToEEPROM(1, 7, 0x0, ((_menuValueArray_bool[7]))));
}
String _convertNamber(int itemType, int convFormat, int valIndex, int indexMax, int indexMin)
{
if (itemType== 4)
{
if (convFormat == 4)
{
return String((_menuValueArray_int[valIndex - 1 ]),DEC);
}
if (convFormat == 5)
{
return String((_menuValueArray_int[valIndex - 1]),HEX);
}
if (convFormat == 6)
{
return String((_menuValueArray_int[valIndex -1]),BIN);
}
}
}
String _convertBoolean(int itemType, int convFormat, int valIndex, int indexMax, int indexMin)
{
if (convFormat == 1)
{
if(_menuValueArray_bool[valIndex -1])
{
return "1";
}
else
{
return "0";
}
}
if (convFormat == 2)
{
if(_menuValueArray_bool[valIndex -1])
{
return "True";
}
else
{
return "False";
}
}
if (convFormat == 3)
{
if(_menuValueArray_bool[valIndex -1 ])
{
return "Да";
}
else
{
return "Нет";
}
}
if(_menuValueArray_bool[valIndex -1])
{
return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMax - 1])));
}
else
{
return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[indexMin - 1])));
}
}
byte readByteFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
return EEPROM.read(addres);
}
void updateByteToEEPROM(int addres, byte bitAddres, byte chipAddres, byte value)
{
return EEPROM.update(addres, value);
}
bool readBooleanFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
byte temp = readByteFromEEPROM(addres, bitAddres, chipAddres);
return bitRead(temp, bitAddres);
}
void updateBooleanToEEPROM(int addres, byte bitAddres, byte chipAddres, bool value)
{
byte temp = readByteFromEEPROM(addres, bitAddres, chipAddres);
bitWrite(temp, bitAddres, value);
updateByteToEEPROM(addres, bitAddres, chipAddres, temp);
}
int readIntegerFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
byte hight = readByteFromEEPROM(addres, bitAddres, chipAddres);
byte low = readByteFromEEPROM((addres+1), bitAddres, chipAddres);
return word(hight, low);
}
void updateIntegerToEEPROM(int addres, byte bitAddres, byte chipAddres, int value)
{
updateByteToEEPROM(addres, bitAddres, chipAddres, highByte(value));
updateByteToEEPROM((addres+1), bitAddres, chipAddres, lowByte(value));
}
byte decToBcd(byte val)
{
return ((val/10*16) + (val%10));
}
void set3231Date(int addres, struct _I2CRealRimeClockTime *timeStruct, int sec, int minut, int hou, int dat, int mo, int ye, int daW)
{
byte temp;
Wire.beginTransmission(addres);
Wire.write(0x00);
if (sec < 0)
{
temp = timeStruct -> seconds;
}
else
{
temp = sec;
}
Wire.write(decToBcd(temp));
if (minut < 0)
{
temp = timeStruct -> minutes;
}
else
{
temp = minut;
}
Wire.write(decToBcd(temp));
if (hou < 0)
{
temp = timeStruct -> Hours;
}
else
{
temp = hou;
}
Wire.write(decToBcd(temp));
if (daW < 0)
{
temp = timeStruct -> weekday;
}
else
{
temp = daW;
}
Wire.write(decToBcd(temp));
if (dat < 0)
{
temp = timeStruct -> day;
}
else
{
temp = dat;
}
Wire.write(decToBcd(temp));
if (mo < 0)
{
temp = timeStruct -> month;
}
else
{
temp = mo;
}
Wire.write(decToBcd(temp));
if (ye < 0)
{
temp = timeStruct -> year;
}
else
{
temp = ye;
}
Wire.write(decToBcd(temp));
Wire.endTransmission();
timeStruct ->startTime = millis() - 1000;
}
void get3231Date(int addres, struct _I2CRealRimeClockTime *timeStruct)
{
if (!(_isTimer ((timeStruct ->startTime), 250)))
{
return;
}
Wire.beginTransmission(addres);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(addres, 7);
if (Wire.available())
{
byte seconds = Wire.read();
byte minutes = Wire.read();
byte hours = Wire.read();
byte day = Wire.read();
byte date = Wire.read();
byte month = Wire.read();
byte year = Wire.read();
timeStruct -> seconds = (((seconds & B11110000) >> 4) * 10 + (seconds & B00001111));
timeStruct -> minutes = (((minutes & B11110000) >> 4) * 10 + (minutes & B00001111));
timeStruct -> Hours = (((hours & B00110000) >> 4) * 10 + (hours & B00001111));
timeStruct -> weekday = (day & B00000111);
timeStruct -> day = (((date & B00110000) >> 4) * 10 + (date & B00001111));
timeStruct -> month = (((month & B00010000) >> 4) * 10 + (month & B00001111));
timeStruct -> year = (((year & B11110000) >> 4) * 10 + (year & B00001111));
}
timeStruct ->startTime = millis();
}
void _func_UB_24760541(struct UB_24760541 *_ubInstans, int ubi_200586030)
{
String ubo_98898145 = _ubInstans->ubo_98898145;
int _gtv6 = _ubInstans->_gtv6;
String _gtv1 = _ubInstans->_gtv1;
String _swi1 = _ubInstans->_swi1;
_gtv1 = (String(_gtv6));
if((_gtv6) > (9))
{
_swi1=_gtv1;
}
else
{
_swi1=((String("0")) + (_gtv1));
}
ubo_98898145 = _swi1;
_gtv6 = ubi_200586030;
_ubInstans->ubo_98898145 = ubo_98898145;
_ubInstans->_gtv6 = _gtv6;
_ubInstans->_gtv1 = _gtv1;
_ubInstans->_swi1 = _swi1;
}