#include <LiquidCrystal.h> #include <EEPROMex.h> LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7); int _dispTempLength1 = 0; boolean _isNeedClearDisp1; struct UB_142171746 { bool ubo_101667604 = 0; bool ubo_51674151 = 0; bool ubo_137412502 = 0; bool ubo_174461762 = 0; bool ubo_157422683 = 0; int _gtv1 = 0; int _gtv2 = 0; int _gtv3 = 0; int _gtv4 = 0; int _gtv5 = 0; bool _bounse1S = 0; bool _bounse1O = 0; unsigned long _bounse1P = 0UL; bool _bounse2S = 0; bool _bounse2O = 0; unsigned long _bounse2P = 0UL; bool _bounse3S = 0; bool _bounse3O = 0; unsigned long _bounse3P = 0UL; bool _bounse4S = 0; bool _bounse4O = 0; unsigned long _bounse4P = 0UL; bool _bounse5S = 0; bool _bounse5O = 0; unsigned long _bounse5P = 0UL; }; UB_142171746 UB_142171746_Instance1; int UB_142171746_ubi_125089190 = 0; const byte _menuParametrsArray[] PROGMEM = {1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 6, 9, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 7, 9, 0, 3, 3, 1, 0, 0, 0, 10, 11, 1, 8, 3, 0, 0, 4, 4, 4, 0, 0, 1, 0, 0, 1, 4, 5, 0, 8, 5, 4, 3, 0, 0, 1, 0, 0, 1, 4, 4, 0, 8, 6, 4, 2, 0, 0, 2, 0, 0, 1, 4, 2, 0, 8, 7, 4, 1, 0, 0, 2, 0, 0, 1, 4, 1, 0, 8}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[] PROGMEM = {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[] PROGMEM = {1}; const char _flprogMenuNameString1[] PROGMEM = "Vent-Off"; const char _flprogMenuNameString2[] PROGMEM = "Vent-On"; const char _flprogMenuNameString3[] PROGMEM = "Sound"; const char _flprogMenuNameString4[] PROGMEM = "Heater-Off"; const char _flprogMenuNameString5[] PROGMEM = "Heater-On"; const char _flprogMenuNameString6[] PROGMEM = "HeaterSetting"; const char _flprogMenuNameString7[] PROGMEM = "Vent Setting"; const char _flprogMenuNameString8[] PROGMEM = "C"; const char _flprogMenuNameString9[] PROGMEM = "Enter to submenu"; const char _flprogMenuNameString10[] PROGMEM = "On"; const char _flprogMenuNameString11[] PROGMEM = "Off"; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11}; struct _menuItemStricture { int startInArrayIndex; }; struct _menuMainStricture { byte startIndex; byte stopIndex; bool isSwitchMenuAroundRing; _menuItemStricture currentItem; }; _menuItemStricture _MenuItems[7]; _menuMainStricture _MainMenus[1]; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv6; bool _gtv7; bool _gtv8; bool _gtv9; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; String _swi2; String _swi1; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp1oldLength = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; int _disp3oldLength = 0; int Menu_Value_4_TVD = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; int Menu_Value_2_TVD = 0; int _disp4oldLength = 0; bool _trgr4 = 0; bool _trgr2 = 0; bool _trgr1 = 0; bool _trgr3 = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_AMMO = 0; bool _tim2I = 0; bool _tim2O = 0; unsigned long _tim2P = 0UL; bool _tim3I = 0; bool _tim3O = 0; unsigned long _tim3P = 0UL; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; int _disp2oldLength = 0; int Menu_Value_3_TVD = 0; int Menu_Value_1_TVD = 0; void setup() { if ((EEPROM.read(0)) != 98) { EEPROM.write(0, 98) ; EEPROM.updateInt(4, 40); EEPROM.updateInt(2, 30); EEPROM.updateBit(1, 0, 0); EEPROM.updateInt(6, 25); EEPROM.updateInt(8, 10); } pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(11, OUTPUT); _lcd1.begin(16, 2); _MenuItems[0].startInArrayIndex = 0; _MenuItems[1].startInArrayIndex = 13; _MenuItems[2].startInArrayIndex = 26; _MenuItems[3].startInArrayIndex = 39; _MenuItems[4].startInArrayIndex = 52; _MenuItems[5].startInArrayIndex = 65; _MenuItems[6].startInArrayIndex = 78; _MainMenus[0].startIndex = 1; _MainMenus[0].isSwitchMenuAroundRing = 1; _MainMenus[0].stopIndex = 3; _MainMenus[0].currentItem = _MenuItems[0]; _menuValueArray_int[0] = (EEPROM.readInt(2)); _menuValueArray_int[1] = (EEPROM.readInt(4)); _menuValueArray_bool[0] = (EEPROM.readBit(1, 0)); _menuValueArray_int[2] = (EEPROM.readInt(6)); _menuValueArray_int[3] = (EEPROM.readInt(8)); } void loop() { bool _tempVariable_bool; byte _tempVariable_byte; if (_isNeedClearDisp1) { _lcd1.clear(); _isNeedClearDisp1 = 0; } _gtv11 = (map(( (analogRead (1))), (0), (1023), (-20), (80))); UB_142171746_ubi_125089190 = (analogRead (0)); UB_142171746_Instance1 = _func_UB_142171746(UB_142171746_Instance1, UB_142171746_ubi_125089190, 96, 250, 402, 635); _gtv3 = UB_142171746_Instance1.ubo_101667604; _gtv4 = UB_142171746_Instance1.ubo_51674151; _gtv5 = UB_142171746_Instance1.ubo_137412502; _gtv2 = UB_142171746_Instance1.ubo_174461762; _gtv1 = UB_142171746_Instance1.ubo_157422683; if (_gtv1) { if (_tim1I) { if (_isTimer(_tim1P, 2000)) { _tim1O = 1; } } else { _tim1I = 1; _tim1P = millis(); } } else { _tim1O = 0; _tim1I = 0; } if (_tim2O) _trgr2 = 0; if (_tim1O) _trgr2 = 1; if (_trgr2) { if (_trgrt3I) { _trgrt3 = 0; } else { _trgrt3 = 1; _trgrt3I = 1; } } else { _trgrt3 = 0; _trgrt3I = 0; }; if (_trgrt1) { _tim2O = 1; _tim2I = 1; } else { if (_tim2I) { _tim2I = 0; _tim2P = millis(); } else { if (_tim2O) { if ( _isTimer(_tim2P, 200)) _tim2O = 0; } } } if (!(_gtv1)) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; }; _gtv8 = _trgrt3; _gtv7 = ( (!(_trgr2)) && (_trgrt1) ); if (1) { if (_tim3I) { if (_isTimer(_tim3P, 200)) { _tim3O = 1; } } else { _tim3I = 1; _tim3P = millis(); } } else { _tim3O = 0; _tim3I = 0; } if (!(_gtv7)) { if (_trgrt2I) { _trgrt2 = 0; } else { _trgrt2 = 1; _trgrt2I = 1; } } else { _trgrt2 = 0; _trgrt2I = 0; }; if (( (_gtv9) && (_gtv8) )) _trgr1 = 0; if (( (_tim3O) && (_trgrt2) )) _trgr1 = 1; _gtv6 = _trgr1; if (_gtv6) { _tempVariable_bool = 1; if ( ! _MenuBlock_47814740_OEIS ) { _MenuBlock_47814740_OEIS = 1; _MainMenus[0].currentItem = _MenuItems[0]; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]); _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_47814740_VNO = _menuOutputValueString (0); _MenuBlock_47814740_AMMO = (pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 5]) ) == 0; _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[0]).currentItem).startInArrayIndex) + 12]); if (_tempVariable_byte == 0 ) { _MenuBlock_47814740_ASO_1 = ""; } else { _MenuBlock_47814740_ASO_1 = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); } } else { _tempVariable_bool = 0; if (_MenuBlock_47814740_OEIS) { _MenuBlock_47814740_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_47814740_AMMO = 0; _MenuBlock_47814740_ASO_1 = ""; _MenuBlock_47814740_MNO = ""; _MenuBlock_47814740_VNO = ""; } if (_gtv4) { if ( ! _MenuBlock_47814740_OMUIS) { _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMUIS = 0; } if (_gtv5) { if ( ! _MenuBlock_47814740_OMDIS) { _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMDIS = 0; } if (( (_gtv7) && (_gtv6) )) { if ( ! _MenuBlock_47814740_OEMIS) { _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) { _menuEnterTheMenuEvents (0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OEMIS = 0; } if (_gtv8) { if ( ! _MenuBlock_47814740_OExFMIS) { _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) { _menuExitFromMenuEvents (0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OExFMIS = 0; } if (_gtv3) { if ( ! _MenuBlock_47814740_OVUIS) { _MenuBlock_47814740_OVUIS = 1; if (_tempVariable_bool) { _valueUpEvents(0); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueUpEvents(0); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVUIS = 0; if ( ! ( _gtv2)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv2) { if ( ! _MenuBlock_47814740_OVDIS) { _MenuBlock_47814740_OVDIS = 1; if (_tempVariable_bool) { _valueDownEvents(0); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueDownEvents(0); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVDIS = 0; if ( ! ( _gtv3)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv6) { _dispTempLength1 = ((_MenuBlock_47814740_MNO)).length(); if (_disp2oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp2oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 0); _lcd1.print((_MenuBlock_47814740_MNO)); } else { if (_disp2oldLength > 0) { _isNeedClearDisp1 = 1; _disp2oldLength = 0; } } if (_gtv6) { _dispTempLength1 = ((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))).length(); if (_disp1oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp1oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 1); _lcd1.print((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))); } else { if (_disp1oldLength > 0) { _isNeedClearDisp1 = 1; _disp1oldLength = 0; } } _gtv9 = _MenuBlock_47814740_AMMO; if ((_gtv11) > (Menu_Value_2_TVD)) _trgr3 = 0; if ((_gtv11) < (Menu_Value_1_TVD)) _trgr3 = 1; digitalWrite(2, !(_trgr3)); if (!(_gtv6)) { Menu_Value_1_TVD = _menuValueArray_int[3]; } _gtv10 = _trgr3; if (!(_gtv6)) { Menu_Value_2_TVD = _menuValueArray_int[2]; } if ((_gtv11) < (Menu_Value_4_TVD)) _trgr4 = 0; if ((_gtv11) > (Menu_Value_3_TVD)) _trgr4 = 1; if (!(_gtv6)) { Menu_Value_3_TVD = _menuValueArray_int[1]; } digitalWrite(3, !(_trgr4)); _gtv12 = _trgr4; if (!(_gtv6)) { Menu_Value_4_TVD = _menuValueArray_int[0]; } digitalWrite(11, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) )); if (_gtv10) { _swi1 = String("H - ON"); } else { _swi1 = String("H - OFF"); } if (_gtv12) { _swi2 = String("V - ON"); } else { _swi2 = String("V - OFF"); } if (!(_gtv6)) { _dispTempLength1 = ((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))).length(); if (_disp3oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp3oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 0); _lcd1.print((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))); } else { if (_disp3oldLength > 0) { _isNeedClearDisp1 = 1; _disp3oldLength = 0; } } if (!(_gtv6)) { _dispTempLength1 = ((((_swi1) + (String(" ")) + (_swi2)))).length(); if (_disp4oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp4oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 1); _lcd1.print((((_swi1) + (String(" ")) + (_swi2)))); } else { if (_disp4oldLength > 0) { _isNeedClearDisp1 = 1; _disp4oldLength = 0; } } } String _floatToStringWitRaz(float value, int raz) { return String(value, raz); } 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)); } } void _menuUpEvents (byte menuIndex) { byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1 ] = 1; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } } void _valueDownEvents (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = 0; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } } void _menuEnterTheMenuEvents (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (!(itemType == 0)) { return; } byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]); if (newIndex == 0) { return; } (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1]; return; } void _menuExitFromMenuEvents (byte menuIndex) { byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); if (parIndex == 0) { return; } (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1]; return; } String _menuOutputValueString (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]); if (itemType == 0) { if ( valueStrIndex == 0) { return ""; } else { return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1]))); } } byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); if ( valIndex == 0) { return ""; } byte 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() { EEPROM.updateInt(2, (_menuValueArray_int[0])); EEPROM.updateInt(4, (_menuValueArray_int[1])); EEPROM.updateBit(1, 0, (_menuValueArray_bool[0])); EEPROM.updateInt(6, (_menuValueArray_int[2])); EEPROM.updateInt(8, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) { String result = String(""); while (pgm_read_byte(string) != '\0') { result = result + char(pgm_read_byte(string)); string++; } return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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]))); } } struct UB_142171746 _func_UB_142171746(struct UB_142171746 _ubInstans, int ubi_125089190, int ubpar_125440348, int ubpar_79146376, int ubpar_175158211, int ubpar_40719224) { bool ubo_101667604 = _ubInstans.ubo_101667604; bool ubo_51674151 = _ubInstans.ubo_51674151; bool ubo_137412502 = _ubInstans.ubo_137412502; bool ubo_174461762 = _ubInstans.ubo_174461762; bool ubo_157422683 = _ubInstans.ubo_157422683; int _gtv1 = _ubInstans._gtv1; int _gtv2 = _ubInstans._gtv2; int _gtv3 = _ubInstans._gtv3; int _gtv4 = _ubInstans._gtv4; int _gtv5 = _ubInstans._gtv5; bool _bounse1S = _ubInstans._bounse1S; bool _bounse1O = _ubInstans._bounse1O; unsigned long _bounse1P = _ubInstans._bounse1P; bool _bounse2S = _ubInstans._bounse2S; bool _bounse2O = _ubInstans._bounse2O; unsigned long _bounse2P = _ubInstans._bounse2P; bool _bounse3S = _ubInstans._bounse3S; bool _bounse3O = _ubInstans._bounse3O; unsigned long _bounse3P = _ubInstans._bounse3P; bool _bounse4S = _ubInstans._bounse4S; bool _bounse4O = _ubInstans._bounse4O; unsigned long _bounse4P = _ubInstans._bounse4P; bool _bounse5S = _ubInstans._bounse5S; bool _bounse5O = _ubInstans._bounse5O; unsigned long _bounse5P = _ubInstans._bounse5P; bool _bounceTmpD1 = (ubi_125089190) < (_gtv1); if (_bounse1S) { if (millis() >= (_bounse1P + 40)) { _bounse1O = _bounceTmpD1; _bounse1S = 0; } } else { if ( _bounceTmpD1 != _bounse1O ) { _bounse1S = 1; _bounse1P = millis(); } } bool _bounceTmpD2 = ( ((ubi_125089190) > (_gtv1)) && ((ubi_125089190) < (_gtv2)) ); if (_bounse2S) { if (millis() >= (_bounse2P + 40)) { _bounse2O = _bounceTmpD2; _bounse2S = 0; } } else { if ( _bounceTmpD2 != _bounse2O ) { _bounse2S = 1; _bounse2P = millis(); } } bool _bounceTmpD3 = ( ((ubi_125089190) > (_gtv2)) && ((ubi_125089190) < (_gtv3)) ); if (_bounse3S) { if (millis() >= (_bounse3P + 40)) { _bounse3O = _bounceTmpD3; _bounse3S = 0; } } else { if ( _bounceTmpD3 != _bounse3O ) { _bounse3S = 1; _bounse3P = millis(); } } bool _bounceTmpD4 = ( ((ubi_125089190) > (_gtv3)) && ((ubi_125089190) < (_gtv4)) ); if (_bounse4S) { if (millis() >= (_bounse4P + 40)) { _bounse4O = _bounceTmpD4; _bounse4S = 0; } } else { if ( _bounceTmpD4 != _bounse4O ) { _bounse4S = 1; _bounse4P = millis(); } } bool _bounceTmpD5 = ( ((ubi_125089190) > (_gtv4)) && ((ubi_125089190) < (_gtv5)) ); if (_bounse5S) { if (millis() >= (_bounse5P + 40)) { _bounse5O = _bounceTmpD5; _bounse5S = 0; } } else { if ( _bounceTmpD5 != _bounse5O ) { _bounse5S = 1; _bounse5P = millis(); } } _gtv1 = (ubpar_125440348) / (2); _gtv2 = (((ubpar_79146376) - (ubpar_125440348)) / (2)) + (ubpar_125440348); _gtv3 = (((ubpar_175158211) - (ubpar_79146376)) / (2)) + (ubpar_79146376); _gtv4 = (((ubpar_40719224) - (ubpar_175158211)) / (2)) + (ubpar_175158211); _gtv5 = (((1023) - (ubpar_40719224)) / (2)) + (ubpar_40719224); ubo_101667604 = _bounse1O; ubo_51674151 = _bounse2O; ubo_137412502 = _bounse3O; ubo_174461762 = _bounse4O; ubo_157422683 = _bounse5O; _ubInstans.ubo_101667604 = ubo_101667604; _ubInstans.ubo_51674151 = ubo_51674151; _ubInstans.ubo_137412502 = ubo_137412502; _ubInstans.ubo_174461762 = ubo_174461762; _ubInstans.ubo_157422683 = ubo_157422683; _ubInstans._gtv1 = _gtv1; _ubInstans._gtv2 = _gtv2; _ubInstans._gtv3 = _gtv3; _ubInstans._gtv4 = _gtv4; _ubInstans._gtv5 = _gtv5; _ubInstans._bounse1S = _bounse1S; _ubInstans._bounse1O = _bounse1O; _ubInstans._bounse1P = _bounse1P; _ubInstans._bounse2S = _bounse2S; _ubInstans._bounse2O = _bounse2O; _ubInstans._bounse2P = _bounse2P; _ubInstans._bounse3S = _bounse3S; _ubInstans._bounse3O = _bounse3O; _ubInstans._bounse3P = _bounse3P; _ubInstans._bounse4S = _bounse4S; _ubInstans._bounse4O = _bounse4O; _ubInstans._bounse4P = _bounse4P; _ubInstans._bounse5S = _bounse5S; _ubInstans._bounse5O = _bounse5O; _ubInstans._bounse5P = _bounse5P; return _ubInstans; }
#include <Wire.h> #include <EEPROMex.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C _lcd2(0x27, 20, 4); int _dispTempLength2 = 0; boolean _isNeedClearDisp2; const byte _menuParametrsArray[] PROGMEM = {1, 5, 1, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 8, 11, 0, 3, 0, 0, 8, 9, 0, 0, 0, 0, 0, 6, 11, 0, 4, 3, 1, 0, 0, 0, 12, 13, 1, 8, 3, 0, 0, 5, 5, 2, 0, 0, 0, 0, 0, 1, 4, 2, 0, 0, 6, 4, 2, 0, 0, 2, 0, 0, 1, 4, 5, 0, 10, 7, 4, 4, 0, 0, 2, 0, 0, 1, 4, 9, 0, 10, 8, 4, 3, 0, 0, 3, 0, 0, 1, 4, 7, 0, 10, 9, 4, 1, 0, 0, 3, 0, 0, 1, 4, 4, 0, 10}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[] PROGMEM = {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[] PROGMEM = {1}; long _menuValueArray_long[2]; const long _menuConstantValuesArray_long[] PROGMEM = {1}; const char _flprogMenuNameString1[] PROGMEM = "Enter Password"; const char _flprogMenuNameString2[] PROGMEM = "ChangePassword"; const char _flprogMenuNameString3[] PROGMEM = "Sound"; const char _flprogMenuNameString4[] PROGMEM = "Vent-Off"; const char _flprogMenuNameString5[] PROGMEM = "Heater-On"; const char _flprogMenuNameString6[] PROGMEM = "Vent Setting"; const char _flprogMenuNameString7[] PROGMEM = "Vent-On"; const char _flprogMenuNameString8[] PROGMEM = "HeaterSetting"; const char _flprogMenuNameString9[] PROGMEM = "Heater-Off"; const char _flprogMenuNameString10[] PROGMEM = "C"; const char _flprogMenuNameString11[] PROGMEM = "Enter to submenu"; const char _flprogMenuNameString12[] PROGMEM = "On"; const char _flprogMenuNameString13[] PROGMEM = "Off"; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11, _flprogMenuNameString12, _flprogMenuNameString13}; struct _menuItemStricture { int startInArrayIndex; }; struct _menuMainStricture { String tempString; byte startIndex; byte stopIndex; bool isSwitchMenuAroundRing; _menuItemStricture currentItem; }; _menuItemStricture _MenuItems[9]; _menuMainStricture _MainMenus[2]; bool _gtv6; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv13; bool _gtv14; bool _gtv15; bool _gtv16; bool _gtv17; bool _gtv18; bool _gtv19; bool _gtv20; bool _gtv21; bool _gtv22; bool _gtv23; bool _gtv7; bool _gtv8; int _disp1oldLength = 0; int Menu_Value_4_TVD = 0; int Menu_Value_2_TVD = 0; bool _trgr4 = 0; String _swi1; bool _trgr1 = 0; bool _trgr3 = 0; int _disp2oldLength = 0; bool _trgt1 = 0; bool _trgt1I = 0; int Menu_Value_3_TVD = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_IDI_0 = 0; bool _MenuBlock_47814740_IDI_1 = 0; bool _MenuBlock_47814740_IDI_2 = 0; bool _MenuBlock_47814740_IDI_3 = 0; bool _MenuBlock_47814740_IDI_4 = 0; bool _MenuBlock_47814740_IDI_5 = 0; bool _MenuBlock_47814740_IDI_6 = 0; bool _MenuBlock_47814740_IDI_7 = 0; bool _MenuBlock_47814740_IDI_8 = 0; bool _MenuBlock_47814740_IDI_9 = 0; bool _MenuBlock_47814740MinusIOS = 0; int Menu_Value_1_TVD = 0; bool _mkb1C1xP1 = 0; bool _mkb1C1xP2 = 0; bool _mkb1C1xP3 = 0; bool _mkb1C1xP4 = 0; bool _mkb1C2xP1 = 0; bool _mkb1C2xP2 = 0; bool _mkb1C2xP3 = 0; bool _mkb1C2xP4 = 0; bool _mkb1C3xP1 = 0; bool _mkb1C3xP2 = 0; bool _mkb1C3xP3 = 0; bool _mkb1C3xP4 = 0; bool _mkb1C4xP1 = 0; bool _mkb1C4xP2 = 0; bool _mkb1C4xP3 = 0; bool _mkb1C4xP4 = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp6oldLength = 0; int _disp4oldLength = 0; int _disp5oldLength = 0; String _MenuBlock_360159546_MNO; String _MenuBlock_360159546_VNO; bool _MenuBlock_360159546_OEIS = 0; bool _MenuBlock_360159546_IDI_0 = 0; bool _MenuBlock_360159546_IDI_1 = 0; bool _MenuBlock_360159546_IDI_2 = 0; bool _MenuBlock_360159546_IDI_3 = 0; bool _MenuBlock_360159546_IDI_4 = 0; bool _MenuBlock_360159546_IDI_5 = 0; bool _MenuBlock_360159546_IDI_6 = 0; bool _MenuBlock_360159546_IDI_7 = 0; bool _MenuBlock_360159546_IDI_8 = 0; bool _MenuBlock_360159546_IDI_9 = 0; int _disp7oldLength = 0; int _disp3oldLength = 0; String _swi2; void setup() { if ((EEPROM.read(0)) != 99) { EEPROM.write(0, 99) ; EEPROM.updateInt(12, 25); EEPROM.updateLong(2, 123456); EEPROM.updateInt(6, 30); EEPROM.updateInt(10, 40); EEPROM.updateBit(1, 0, 0); EEPROM.updateInt(8, 10); } Wire.begin(); pinMode(16, OUTPUT); pinMode(15, OUTPUT); pinMode(17, OUTPUT); _lcd2.init(); _lcd2.backlight(); pinMode(6, INPUT); digitalWrite(6, HIGH); pinMode(7, INPUT); digitalWrite(7, HIGH); pinMode(8, INPUT); digitalWrite(8, HIGH); pinMode(9, INPUT); digitalWrite(9, HIGH); pinMode(2, OUTPUT); digitalWrite(2, HIGH); pinMode(3, OUTPUT); digitalWrite(3, HIGH); pinMode(4, OUTPUT); digitalWrite(4, HIGH); pinMode(5, OUTPUT); digitalWrite(5, HIGH); _MenuItems[0].startInArrayIndex = 0; _MenuItems[1].startInArrayIndex = 13; _MenuItems[2].startInArrayIndex = 26; _MenuItems[3].startInArrayIndex = 39; _MenuItems[4].startInArrayIndex = 52; _MenuItems[5].startInArrayIndex = 65; _MenuItems[6].startInArrayIndex = 78; _MenuItems[7].startInArrayIndex = 91; _MenuItems[8].startInArrayIndex = 104; _MainMenus[0].tempString = ""; _MainMenus[0].startIndex = 1; _MainMenus[0].isSwitchMenuAroundRing = 0; _MainMenus[0].stopIndex = 1; _MainMenus[0].currentItem = _MenuItems[0]; _MainMenus[1].tempString = ""; _MainMenus[1].startIndex = 2; _MainMenus[1].isSwitchMenuAroundRing = 1; _MainMenus[1].stopIndex = 5; _MainMenus[1].currentItem = _MenuItems[1]; _menuValueArray_long[1] = (EEPROM.readLong(2)); _menuValueArray_bool[0] = (EEPROM.readBit(1, 0)); _menuValueArray_int[0] = (EEPROM.readInt(6)); _menuValueArray_int[1] = (EEPROM.readInt(8)); _menuValueArray_int[2] = (EEPROM.readInt(10)); _menuValueArray_int[3] = (EEPROM.readInt(12)); } void loop() { bool _tempVariable_bool; byte _tempVariable_byte; if (_isNeedClearDisp2) { _lcd2.clear(); _isNeedClearDisp2 = 0; } _gtv11 = (map(( (analogRead (0))), (0), (1023), (-20), (80))); digitalWrite(2, 0); _mkb1C1xP1 = ! (digitalRead(6)); _mkb1C1xP2 = ! (digitalRead(7)); _mkb1C1xP3 = ! (digitalRead(8)); _mkb1C1xP4 = ! (digitalRead(9)); digitalWrite(2, 1); digitalWrite(3, 0); _mkb1C2xP1 = ! (digitalRead(6)); _mkb1C2xP2 = ! (digitalRead(7)); _mkb1C2xP3 = ! (digitalRead(8)); _mkb1C2xP4 = ! (digitalRead(9)); digitalWrite(3, 1); digitalWrite(4, 0); _mkb1C3xP1 = ! (digitalRead(6)); _mkb1C3xP2 = ! (digitalRead(7)); _mkb1C3xP3 = ! (digitalRead(8)); _mkb1C3xP4 = ! (digitalRead(9)); digitalWrite(4, 1); digitalWrite(5, 0); _mkb1C4xP1 = ! (digitalRead(6)); _mkb1C4xP2 = ! (digitalRead(7)); _mkb1C4xP3 = ! (digitalRead(8)); _mkb1C4xP4 = ! (digitalRead(9)); digitalWrite(5, 1); _gtv1 = _mkb1C1xP1; _gtv2 = _mkb1C1xP2; _gtv3 = _mkb1C1xP3; _gtv18 = _mkb1C1xP4; _gtv4 = _mkb1C2xP1; _gtv5 = _mkb1C2xP2; _gtv13 = _mkb1C2xP3; _gtv19 = _mkb1C2xP4; _gtv14 = _mkb1C3xP1; _gtv15 = _mkb1C3xP2; _gtv16 = _mkb1C3xP3; _gtv20 = _mkb1C3xP4; _gtv23 = _mkb1C4xP1; _gtv17 = _mkb1C4xP2; _gtv22 = _mkb1C4xP3; _gtv21 = _mkb1C4xP4; bool _tmp1 = _gtv23; if (_tmp1) { if (! _trgt1I) _trgt1 = ! _trgt1; } _trgt1I = _tmp1; _gtv6 = _trgt1; if (_gtv7) { _tempVariable_bool = 1; if ( ! _MenuBlock_360159546_OEIS ) { _MenuBlock_360159546_OEIS = 1; (_MainMenus[0]).tempString = ""; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]); _MenuBlock_360159546_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_360159546_VNO = _menuOutputValueString (0); } else { _tempVariable_bool = 0; if (_MenuBlock_360159546_OEIS) { _MenuBlock_360159546_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_360159546_MNO = ""; _MenuBlock_360159546_VNO = ""; } if (_gtv17) { if ( ! _MenuBlock_360159546_IDI_0) { _MenuBlock_360159546_IDI_0 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '0'); } } } else { _MenuBlock_360159546_IDI_0 = 0; } if (_gtv1) { if ( ! _MenuBlock_360159546_IDI_1) { _MenuBlock_360159546_IDI_1 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '1'); } } } else { _MenuBlock_360159546_IDI_1 = 0; } if (_gtv2) { if ( ! _MenuBlock_360159546_IDI_2) { _MenuBlock_360159546_IDI_2 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '2'); } } } else { _MenuBlock_360159546_IDI_2 = 0; } if (_gtv3) { if ( ! _MenuBlock_360159546_IDI_3) { _MenuBlock_360159546_IDI_3 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '3'); } } } else { _MenuBlock_360159546_IDI_3 = 0; } if (_gtv4) { if ( ! _MenuBlock_360159546_IDI_4) { _MenuBlock_360159546_IDI_4 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '4'); } } } else { _MenuBlock_360159546_IDI_4 = 0; } if (_gtv5) { if ( ! _MenuBlock_360159546_IDI_5) { _MenuBlock_360159546_IDI_5 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '5'); } } } else { _MenuBlock_360159546_IDI_5 = 0; } if (_gtv13) { if ( ! _MenuBlock_360159546_IDI_6) { _MenuBlock_360159546_IDI_6 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '6'); } } } else { _MenuBlock_360159546_IDI_6 = 0; } if (_gtv14) { if ( ! _MenuBlock_360159546_IDI_7) { _MenuBlock_360159546_IDI_7 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '7'); } } } else { _MenuBlock_360159546_IDI_7 = 0; } if (_gtv15) { if ( ! _MenuBlock_360159546_IDI_8) { _MenuBlock_360159546_IDI_8 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '8'); } } } else { _MenuBlock_360159546_IDI_8 = 0; } if (_gtv16) { if ( ! _MenuBlock_360159546_IDI_9) { _MenuBlock_360159546_IDI_9 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '9'); } } } else { _MenuBlock_360159546_IDI_9 = 0; } if (_gtv7) { _dispTempLength2 = ((_MenuBlock_360159546_MNO)).length(); if (_disp6oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp6oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((_MenuBlock_360159546_MNO)); } else { if (_disp6oldLength > 0) { _isNeedClearDisp2 = 1; _disp6oldLength = 0; } } if (_gtv7) { _dispTempLength2 = ((_MenuBlock_360159546_VNO)).length(); if (_disp7oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp7oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((_MenuBlock_360159546_VNO)); } else { if (_disp7oldLength > 0) { _isNeedClearDisp2 = 1; _disp7oldLength = 0; } } if (_trgrt1) _trgr1 = 0; if (((_menuValueArray_long[0])) == ((_menuValueArray_long[1]))) _trgr1 = 1; if (!(_gtv6)) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; }; _gtv7 = ( (_gtv6) && (!(_trgr1)) ); _gtv8 = ( (_trgr1) && (_gtv6) ); if (_trgrt1) { _menuValueArray_long[0] = 0L; } if (_gtv8) { _tempVariable_bool = 1; if ( ! _MenuBlock_47814740_OEIS ) { _MenuBlock_47814740_OEIS = 1; _MainMenus[1].currentItem = _MenuItems[1]; (_MainMenus[1]).tempString = ""; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[1].currentItem ).startInArrayIndex) + 10]); _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_47814740_VNO = _menuOutputValueString (1); _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[1]).currentItem).startInArrayIndex) + 12]); if (_tempVariable_byte == 0 ) { _MenuBlock_47814740_ASO_1 = ""; } else { _MenuBlock_47814740_ASO_1 = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); } } else { _tempVariable_bool = 0; if (_MenuBlock_47814740_OEIS) { _MenuBlock_47814740_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_47814740_ASO_1 = ""; _MenuBlock_47814740_MNO = ""; _MenuBlock_47814740_VNO = ""; } if (_gtv20) { if ( ! _MenuBlock_47814740_OMUIS) { _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMUIS = 0; } if (_gtv21) { if ( ! _MenuBlock_47814740_OMDIS) { _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMDIS = 0; } if (_gtv18) { if ( ! _MenuBlock_47814740_OEMIS) { _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) { _menuEnterTheMenuEvents (1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OEMIS = 0; } if (_gtv19) { if ( ! _MenuBlock_47814740_OExFMIS) { _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) { _menuExitFromMenuEvents (1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OExFMIS = 0; } if (_gtv17) { if ( ! _MenuBlock_47814740_IDI_0) { _MenuBlock_47814740_IDI_0 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '0'); } } } else { _MenuBlock_47814740_IDI_0 = 0; } if (_gtv1) { if ( ! _MenuBlock_47814740_IDI_1) { _MenuBlock_47814740_IDI_1 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '1'); } } } else { _MenuBlock_47814740_IDI_1 = 0; } if (_gtv2) { if ( ! _MenuBlock_47814740_IDI_2) { _MenuBlock_47814740_IDI_2 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '2'); } } } else { _MenuBlock_47814740_IDI_2 = 0; } if (_gtv3) { if ( ! _MenuBlock_47814740_IDI_3) { _MenuBlock_47814740_IDI_3 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '3'); } } } else { _MenuBlock_47814740_IDI_3 = 0; } if (_gtv4) { if ( ! _MenuBlock_47814740_IDI_4) { _MenuBlock_47814740_IDI_4 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '4'); } } } else { _MenuBlock_47814740_IDI_4 = 0; } if (_gtv5) { if ( ! _MenuBlock_47814740_IDI_5) { _MenuBlock_47814740_IDI_5 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '5'); } } } else { _MenuBlock_47814740_IDI_5 = 0; } if (_gtv13) { if ( ! _MenuBlock_47814740_IDI_6) { _MenuBlock_47814740_IDI_6 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '6'); } } } else { _MenuBlock_47814740_IDI_6 = 0; } if (_gtv14) { if ( ! _MenuBlock_47814740_IDI_7) { _MenuBlock_47814740_IDI_7 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '7'); } } } else { _MenuBlock_47814740_IDI_7 = 0; } if (_gtv15) { if ( ! _MenuBlock_47814740_IDI_8) { _MenuBlock_47814740_IDI_8 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '8'); } } } else { _MenuBlock_47814740_IDI_8 = 0; } if (_gtv16) { if ( ! _MenuBlock_47814740_IDI_9) { _MenuBlock_47814740_IDI_9 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '9'); } } } else { _MenuBlock_47814740_IDI_9 = 0; } if (_gtv22) { if ( ! _MenuBlock_47814740MinusIOS) { _MenuBlock_47814740MinusIOS = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '-' ); } } } else { _MenuBlock_47814740MinusIOS = 0; } if (_gtv8) { _dispTempLength2 = ((_MenuBlock_47814740_MNO)).length(); if (_disp2oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp2oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((_MenuBlock_47814740_MNO)); } else { if (_disp2oldLength > 0) { _isNeedClearDisp2 = 1; _disp2oldLength = 0; } } if (_gtv8) { _dispTempLength2 = ((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))).length(); if (_disp1oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp1oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))); } else { if (_disp1oldLength > 0) { _isNeedClearDisp2 = 1; _disp1oldLength = 0; } } if ((_gtv11) > (Menu_Value_2_TVD)) _trgr3 = 0; if ((_gtv11) < (Menu_Value_1_TVD)) _trgr3 = 1; digitalWrite(16, !(_trgr3)); if (!(_gtv6)) { Menu_Value_1_TVD = _menuValueArray_int[1]; } _gtv10 = _trgr3; if (!(_gtv6)) { Menu_Value_2_TVD = _menuValueArray_int[3]; } if ((_gtv11) < (Menu_Value_4_TVD)) _trgr4 = 0; if ((_gtv11) > (Menu_Value_3_TVD)) _trgr4 = 1; if (!(_gtv6)) { Menu_Value_3_TVD = _menuValueArray_int[2]; } digitalWrite(15, !(_trgr4)); _gtv12 = _trgr4; if (!(_gtv6)) { Menu_Value_4_TVD = _menuValueArray_int[0]; } digitalWrite(17, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) )); if (_gtv10) { _swi1 = String("Heater - ON"); } else { _swi1 = String("Heater - OFF"); } if (_gtv12) { _swi2 = String("Ventilation - ON"); } else { _swi2 = String("Ventilation - OFF"); } if (!(_gtv6)) { _dispTempLength2 = ((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))).length(); if (_disp3oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp3oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))); } else { if (_disp3oldLength > 0) { _isNeedClearDisp2 = 1; _disp3oldLength = 0; } } if (!(_gtv6)) { _dispTempLength2 = ((_swi1)).length(); if (_disp4oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp4oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((_swi1)); } else { if (_disp4oldLength > 0) { _isNeedClearDisp2 = 1; _disp4oldLength = 0; } } if (!(_gtv6)) { _dispTempLength2 = ((_swi2)).length(); if (_disp5oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp5oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 2); _lcd2.print((_swi2)); } else { if (_disp5oldLength > 0) { _isNeedClearDisp2 = 1; _disp5oldLength = 0; } } } String _floatToStringWitRaz(float value, int raz) { return String(value, raz); } void _menuUpEvents (byte menuIndex) { (_MainMenus[menuIndex]).tempString = ""; byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { (_MainMenus[menuIndex]).tempString = ""; byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 _menuEnterTheMenuEvents (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (!(itemType == 0)) { return; } byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]); if (newIndex == 0) { return; } (_MainMenus[menuIndex]).tempString = ""; (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1]; return; } void _menuExitFromMenuEvents (byte menuIndex) { byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); if (parIndex == 0) { return; } (_MainMenus[menuIndex]).tempString = ""; (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1]; return; } String _menuOutputValueString (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]); if (itemType == 0) { if ( valueStrIndex == 0) { return ""; } else { return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1]))); } } byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); if ( valIndex == 0) { return ""; } byte 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); } if (itemType == 5) { return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin); } return ""; } void _menuDirectInputKeyPressEvents(byte menuIndex, char inputSymbol) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte temp; if (valIndex == 0) { return; } byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (itemType == 7) { return; } if (itemType == 3) { (_MainMenus[menuIndex]).tempString = ""; } if (inputSymbol == '-') { temp = ((_MainMenus[menuIndex]).tempString).length() ; if (temp == 0) { (_MainMenus[menuIndex]).tempString = "-"; } else { if (((_MainMenus[menuIndex]).tempString).charAt(0) == '-') { (_MainMenus[menuIndex]).tempString = ((_MainMenus[menuIndex]).tempString).substring(1); } else { (_MainMenus[menuIndex]).tempString = "-" + (_MainMenus[menuIndex]).tempString; } } } else { (_MainMenus[menuIndex]).tempString = (_MainMenus[menuIndex]).tempString + inputSymbol; } if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = ((((_MainMenus[menuIndex]).tempString )).toInt()); } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = (((_MainMenus[menuIndex]).tempString )).toInt(); } if (itemType == 5) { _menuValueArray_long[valIndex - 1] = (((_MainMenus[menuIndex]).tempString ).toInt()); } } void _menuUpdateToEEpromItems() { EEPROM.updateLong(2, (_menuValueArray_long[1])); EEPROM.updateBit(1, 0, (_menuValueArray_bool[0])); EEPROM.updateInt(6, (_menuValueArray_int[0])); EEPROM.updateInt(8, (_menuValueArray_int[1])); EEPROM.updateInt(10, (_menuValueArray_int[2])); EEPROM.updateInt(12, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) { String result = String(""); while (pgm_read_byte(string) != '\0') { result = result + char(pgm_read_byte(string)); string++; } return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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); } } if (itemType == 5) { if (convFormat == 4) { return String((_menuValueArray_long[valIndex - 1 ]), DEC); } if (convFormat == 5) { return String((_menuValueArray_long[valIndex - 1]), HEX); } if (convFormat == 6) { return String((_menuValueArray_long[valIndex - 1]), BIN); } } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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]))); } }
= {_flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11, _flprogMenuNameString12, _flprogMenuNameString13}; #include <Wire.h> #include <EEPROMex.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C _lcd2(0x27, 20, 4); int _dispTempLength2 = 0; boolean _isNeedClearDisp2; const byte _menuParametrsArray[] PROGMEM = {1, 5, 1, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 8, 11, 0, 3, 0, 0, 8, 9, 0, 0, 0, 0, 0, 6, 11, 0, 4, 3, 1, 0, 0, 0, 12, 13, 1, 8, 3, 0, 0, 5, 5, 2, 0, 0, 0, 0, 0, 1, 4, 2, 0, 0, 6, 4, 2, 0, 0, 2, 0, 0, 1, 4, 5, 0, 10, 7, 4, 4, 0, 0, 2, 0, 0, 1, 4, 9, 0, 10, 8, 4, 3, 0, 0, 3, 0, 0, 1, 4, 7, 0, 10, 9, 4, 1, 0, 0, 3, 0, 0, 1, 4, 4, 0, 10}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[] PROGMEM = {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[] PROGMEM = {1}; long _menuValueArray_long[2]; const long _menuConstantValuesArray_long[] PROGMEM = {1}; const char _flprogMenuNameString1[] PROGMEM = "Enter Password"; const char _flprogMenuNameString2[] PROGMEM = "ChangePassword"; const char _flprogMenuNameString3[] PROGMEM = "Sound"; const char _flprogMenuNameString4[] PROGMEM = "Vent-Off"; const char _flprogMenuNameString5[] PROGMEM = "Heater-On"; const char _flprogMenuNameString6[] PROGMEM = "Vent Setting"; const char _flprogMenuNameString7[] PROGMEM = "Vent-On"; const char _flprogMenuNameString8[] PROGMEM = "HeaterSetting"; const char _flprogMenuNameString9[] PROGMEM = "Heater-Off"; const char _flprogMenuNameString10[] PROGMEM = "C"; const char _flprogMenuNameString11[] PROGMEM = "Enter to submenu"; const char _flprogMenuNameString12[] PROGMEM = "On"; const char _flprogMenuNameString13[] PROGMEM = "Off"; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11, _flprogMenuNameString12, _flprogMenuNameString13}; struct _menuItemStricture { int startInArrayIndex; }; struct _menuMainStricture { String tempString; byte startIndex; byte stopIndex; bool isSwitchMenuAroundRing; _menuItemStricture currentItem; }; _menuItemStricture _MenuItems[9]; _menuMainStricture _MainMenus[2]; bool _gtv6; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv13; bool _gtv14; bool _gtv15; bool _gtv16; bool _gtv17; bool _gtv18; bool _gtv19; bool _gtv20; bool _gtv21; bool _gtv22; bool _gtv23; bool _gtv7; bool _gtv8; int _disp1oldLength = 0; int Menu_Value_4_TVD = 0; int Menu_Value_2_TVD = 0; bool _trgr4 = 0; String _swi1; bool _trgr1 = 0; bool _trgr3 = 0; int _disp2oldLength = 0; bool _trgt1 = 0; bool _trgt1I = 0; int Menu_Value_3_TVD = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_IDI_0 = 0; bool _MenuBlock_47814740_IDI_1 = 0; bool _MenuBlock_47814740_IDI_2 = 0; bool _MenuBlock_47814740_IDI_3 = 0; bool _MenuBlock_47814740_IDI_4 = 0; bool _MenuBlock_47814740_IDI_5 = 0; bool _MenuBlock_47814740_IDI_6 = 0; bool _MenuBlock_47814740_IDI_7 = 0; bool _MenuBlock_47814740_IDI_8 = 0; bool _MenuBlock_47814740_IDI_9 = 0; bool _MenuBlock_47814740MinusIOS = 0; int Menu_Value_1_TVD = 0; bool _mkb1C1xP1 = 0; bool _mkb1C1xP2 = 0; bool _mkb1C1xP3 = 0; bool _mkb1C1xP4 = 0; bool _mkb1C2xP1 = 0; bool _mkb1C2xP2 = 0; bool _mkb1C2xP3 = 0; bool _mkb1C2xP4 = 0; bool _mkb1C3xP1 = 0; bool _mkb1C3xP2 = 0; bool _mkb1C3xP3 = 0; bool _mkb1C3xP4 = 0; bool _mkb1C4xP1 = 0; bool _mkb1C4xP2 = 0; bool _mkb1C4xP3 = 0; bool _mkb1C4xP4 = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp6oldLength = 0; int _disp4oldLength = 0; int _disp5oldLength = 0; String _MenuBlock_360159546_MNO; String _MenuBlock_360159546_VNO; bool _MenuBlock_360159546_OEIS = 0; bool _MenuBlock_360159546_IDI_0 = 0; bool _MenuBlock_360159546_IDI_1 = 0; bool _MenuBlock_360159546_IDI_2 = 0; bool _MenuBlock_360159546_IDI_3 = 0; bool _MenuBlock_360159546_IDI_4 = 0; bool _MenuBlock_360159546_IDI_5 = 0; bool _MenuBlock_360159546_IDI_6 = 0; bool _MenuBlock_360159546_IDI_7 = 0; bool _MenuBlock_360159546_IDI_8 = 0; bool _MenuBlock_360159546_IDI_9 = 0; int _disp7oldLength = 0; int _disp3oldLength = 0; String _swi2; void setup() { if ((EEPROM.read(0)) != 99) { EEPROM.write(0, 99) ; EEPROM.updateInt(12, 25); EEPROM.updateLong(2, 123456); EEPROM.updateInt(6, 30); EEPROM.updateInt(10, 40); EEPROM.updateBit(1, 0, 0); EEPROM.updateInt(8, 10); } Wire.begin(); pinMode(16, OUTPUT); pinMode(15, OUTPUT); pinMode(17, OUTPUT); _lcd2.init(); _lcd2.backlight(); pinMode(6, INPUT); digitalWrite(6, HIGH); pinMode(7, INPUT); digitalWrite(7, HIGH); pinMode(8, INPUT); digitalWrite(8, HIGH); pinMode(9, INPUT); digitalWrite(9, HIGH); pinMode(2, OUTPUT); digitalWrite(2, HIGH); pinMode(3, OUTPUT); digitalWrite(3, HIGH); pinMode(4, OUTPUT); digitalWrite(4, HIGH); pinMode(5, OUTPUT); digitalWrite(5, HIGH); _MenuItems[0].startInArrayIndex = 0; _MenuItems[1].startInArrayIndex = 13; _MenuItems[2].startInArrayIndex = 26; _MenuItems[3].startInArrayIndex = 39; _MenuItems[4].startInArrayIndex = 52; _MenuItems[5].startInArrayIndex = 65; _MenuItems[6].startInArrayIndex = 78; _MenuItems[7].startInArrayIndex = 91; _MenuItems[8].startInArrayIndex = 104; _MainMenus[0].tempString = ""; _MainMenus[0].startIndex = 1; _MainMenus[0].isSwitchMenuAroundRing = 0; _MainMenus[0].stopIndex = 1; _MainMenus[0].currentItem = _MenuItems[0]; _MainMenus[1].tempString = ""; _MainMenus[1].startIndex = 2; _MainMenus[1].isSwitchMenuAroundRing = 1; _MainMenus[1].stopIndex = 5; _MainMenus[1].currentItem = _MenuItems[1]; _menuValueArray_long[1] = (EEPROM.readLong(2)); _menuValueArray_bool[0] = (EEPROM.readBit(1, 0)); _menuValueArray_int[0] = (EEPROM.readInt(6)); _menuValueArray_int[1] = (EEPROM.readInt(8)); _menuValueArray_int[2] = (EEPROM.readInt(10)); _menuValueArray_int[3] = (EEPROM.readInt(12)); } void loop() { bool _tempVariable_bool; byte _tempVariable_byte; if (_isNeedClearDisp2) { _lcd2.clear(); _isNeedClearDisp2 = 0; } _gtv11 = (map(( (analogRead (0))), (0), (1023), (-20), (80))); digitalWrite(2, 0); _mkb1C1xP1 = ! (digitalRead(6)); _mkb1C1xP2 = ! (digitalRead(7)); _mkb1C1xP3 = ! (digitalRead(8)); _mkb1C1xP4 = ! (digitalRead(9)); digitalWrite(2, 1); digitalWrite(3, 0); _mkb1C2xP1 = ! (digitalRead(6)); _mkb1C2xP2 = ! (digitalRead(7)); _mkb1C2xP3 = ! (digitalRead(8)); _mkb1C2xP4 = ! (digitalRead(9)); digitalWrite(3, 1); digitalWrite(4, 0); _mkb1C3xP1 = ! (digitalRead(6)); _mkb1C3xP2 = ! (digitalRead(7)); _mkb1C3xP3 = ! (digitalRead(8)); _mkb1C3xP4 = ! (digitalRead(9)); digitalWrite(4, 1); digitalWrite(5, 0); _mkb1C4xP1 = ! (digitalRead(6)); _mkb1C4xP2 = ! (digitalRead(7)); _mkb1C4xP3 = ! (digitalRead(8)); _mkb1C4xP4 = ! (digitalRead(9)); digitalWrite(5, 1); _gtv1 = _mkb1C1xP1; _gtv2 = _mkb1C1xP2; _gtv3 = _mkb1C1xP3; _gtv18 = _mkb1C1xP4; _gtv4 = _mkb1C2xP1; _gtv5 = _mkb1C2xP2; _gtv13 = _mkb1C2xP3; _gtv19 = _mkb1C2xP4; _gtv14 = _mkb1C3xP1; _gtv15 = _mkb1C3xP2; _gtv16 = _mkb1C3xP3; _gtv20 = _mkb1C3xP4; _gtv23 = _mkb1C4xP1; _gtv17 = _mkb1C4xP2; _gtv22 = _mkb1C4xP3; _gtv21 = _mkb1C4xP4; bool _tmp1 = _gtv23; if (_tmp1) { if (! _trgt1I) _trgt1 = ! _trgt1; } _trgt1I = _tmp1; _gtv6 = _trgt1; if (_gtv7) { _tempVariable_bool = 1; if ( ! _MenuBlock_360159546_OEIS ) { _MenuBlock_360159546_OEIS = 1; (_MainMenus[0]).tempString = ""; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]); _MenuBlock_360159546_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_360159546_VNO = _menuOutputValueString (0); } else { _tempVariable_bool = 0; if (_MenuBlock_360159546_OEIS) { _MenuBlock_360159546_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_360159546_MNO = ""; _MenuBlock_360159546_VNO = ""; } if (_gtv17) { if ( ! _MenuBlock_360159546_IDI_0) { _MenuBlock_360159546_IDI_0 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '0'); } } } else { _MenuBlock_360159546_IDI_0 = 0; } if (_gtv1) { if ( ! _MenuBlock_360159546_IDI_1) { _MenuBlock_360159546_IDI_1 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '1'); } } } else { _MenuBlock_360159546_IDI_1 = 0; } if (_gtv2) { if ( ! _MenuBlock_360159546_IDI_2) { _MenuBlock_360159546_IDI_2 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '2'); } } } else { _MenuBlock_360159546_IDI_2 = 0; } if (_gtv3) { if ( ! _MenuBlock_360159546_IDI_3) { _MenuBlock_360159546_IDI_3 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '3'); } } } else { _MenuBlock_360159546_IDI_3 = 0; } if (_gtv4) { if ( ! _MenuBlock_360159546_IDI_4) { _MenuBlock_360159546_IDI_4 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '4'); } } } else { _MenuBlock_360159546_IDI_4 = 0; } if (_gtv5) { if ( ! _MenuBlock_360159546_IDI_5) { _MenuBlock_360159546_IDI_5 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '5'); } } } else { _MenuBlock_360159546_IDI_5 = 0; } if (_gtv13) { if ( ! _MenuBlock_360159546_IDI_6) { _MenuBlock_360159546_IDI_6 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '6'); } } } else { _MenuBlock_360159546_IDI_6 = 0; } if (_gtv14) { if ( ! _MenuBlock_360159546_IDI_7) { _MenuBlock_360159546_IDI_7 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '7'); } } } else { _MenuBlock_360159546_IDI_7 = 0; } if (_gtv15) { if ( ! _MenuBlock_360159546_IDI_8) { _MenuBlock_360159546_IDI_8 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '8'); } } } else { _MenuBlock_360159546_IDI_8 = 0; } if (_gtv16) { if ( ! _MenuBlock_360159546_IDI_9) { _MenuBlock_360159546_IDI_9 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '9'); } } } else { _MenuBlock_360159546_IDI_9 = 0; } if (_gtv7) { _dispTempLength2 = ((_MenuBlock_360159546_MNO)).length(); if (_disp6oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp6oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((_MenuBlock_360159546_MNO)); } else { if (_disp6oldLength > 0) { _isNeedClearDisp2 = 1; _disp6oldLength = 0; } } if (_gtv7) { _dispTempLength2 = ((_MenuBlock_360159546_VNO)).length(); if (_disp7oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp7oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((_MenuBlock_360159546_VNO)); } else { if (_disp7oldLength > 0) { _isNeedClearDisp2 = 1; _disp7oldLength = 0; } } if (_trgrt1) _trgr1 = 0; if (((_menuValueArray_long[0])) == ((_menuValueArray_long[1]))) _trgr1 = 1; if (!(_gtv6)) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; }; _gtv7 = ( (_gtv6) && (!(_trgr1)) ); _gtv8 = ( (_trgr1) && (_gtv6) ); if (_trgrt1) { _menuValueArray_long[0] = 0L; } if (_gtv8) { _tempVariable_bool = 1; if ( ! _MenuBlock_47814740_OEIS ) { _MenuBlock_47814740_OEIS = 1; _MainMenus[1].currentItem = _MenuItems[1]; (_MainMenus[1]).tempString = ""; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[1].currentItem ).startInArrayIndex) + 10]); _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_47814740_VNO = _menuOutputValueString (1); _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[1]).currentItem).startInArrayIndex) + 12]); if (_tempVariable_byte == 0 ) { _MenuBlock_47814740_ASO_1 = ""; } else { _MenuBlock_47814740_ASO_1 = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); } } else { _tempVariable_bool = 0; if (_MenuBlock_47814740_OEIS) { _MenuBlock_47814740_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_47814740_ASO_1 = ""; _MenuBlock_47814740_MNO = ""; _MenuBlock_47814740_VNO = ""; } if (_gtv20) { if ( ! _MenuBlock_47814740_OMUIS) { _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMUIS = 0; } if (_gtv21) { if ( ! _MenuBlock_47814740_OMDIS) { _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMDIS = 0; } if (_gtv18) { if ( ! _MenuBlock_47814740_OEMIS) { _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) { _menuEnterTheMenuEvents (1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OEMIS = 0; } if (_gtv19) { if ( ! _MenuBlock_47814740_OExFMIS) { _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) { _menuExitFromMenuEvents (1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OExFMIS = 0; } if (_gtv17) { if ( ! _MenuBlock_47814740_IDI_0) { _MenuBlock_47814740_IDI_0 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '0'); } } } else { _MenuBlock_47814740_IDI_0 = 0; } if (_gtv1) { if ( ! _MenuBlock_47814740_IDI_1) { _MenuBlock_47814740_IDI_1 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '1'); } } } else { _MenuBlock_47814740_IDI_1 = 0; } if (_gtv2) { if ( ! _MenuBlock_47814740_IDI_2) { _MenuBlock_47814740_IDI_2 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '2'); } } } else { _MenuBlock_47814740_IDI_2 = 0; } if (_gtv3) { if ( ! _MenuBlock_47814740_IDI_3) { _MenuBlock_47814740_IDI_3 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '3'); } } } else { _MenuBlock_47814740_IDI_3 = 0; } if (_gtv4) { if ( ! _MenuBlock_47814740_IDI_4) { _MenuBlock_47814740_IDI_4 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '4'); } } } else { _MenuBlock_47814740_IDI_4 = 0; } if (_gtv5) { if ( ! _MenuBlock_47814740_IDI_5) { _MenuBlock_47814740_IDI_5 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '5'); } } } else { _MenuBlock_47814740_IDI_5 = 0; } if (_gtv13) { if ( ! _MenuBlock_47814740_IDI_6) { _MenuBlock_47814740_IDI_6 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '6'); } } } else { _MenuBlock_47814740_IDI_6 = 0; } if (_gtv14) { if ( ! _MenuBlock_47814740_IDI_7) { _MenuBlock_47814740_IDI_7 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '7'); } } } else { _MenuBlock_47814740_IDI_7 = 0; } if (_gtv15) { if ( ! _MenuBlock_47814740_IDI_8) { _MenuBlock_47814740_IDI_8 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '8'); } } } else { _MenuBlock_47814740_IDI_8 = 0; } if (_gtv16) { if ( ! _MenuBlock_47814740_IDI_9) { _MenuBlock_47814740_IDI_9 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '9'); } } } else { _MenuBlock_47814740_IDI_9 = 0; } if (_gtv22) { if ( ! _MenuBlock_47814740MinusIOS) { _MenuBlock_47814740MinusIOS = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '-' ); } } } else { _MenuBlock_47814740MinusIOS = 0; } if (_gtv8) { _dispTempLength2 = ((_MenuBlock_47814740_MNO)).length(); if (_disp2oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp2oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((_MenuBlock_47814740_MNO)); } else { if (_disp2oldLength > 0) { _isNeedClearDisp2 = 1; _disp2oldLength = 0; } } if (_gtv8) { _dispTempLength2 = ((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))).length(); if (_disp1oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp1oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))); } else { if (_disp1oldLength > 0) { _isNeedClearDisp2 = 1; _disp1oldLength = 0; } } if ((_gtv11) > (Menu_Value_2_TVD)) _trgr3 = 0; if ((_gtv11) < (Menu_Value_1_TVD)) _trgr3 = 1; digitalWrite(16, !(_trgr3)); if (!(_gtv6)) { Menu_Value_1_TVD = _menuValueArray_int[1]; } _gtv10 = _trgr3; if (!(_gtv6)) { Menu_Value_2_TVD = _menuValueArray_int[3]; } if ((_gtv11) < (Menu_Value_4_TVD)) _trgr4 = 0; if ((_gtv11) > (Menu_Value_3_TVD)) _trgr4 = 1; if (!(_gtv6)) { Menu_Value_3_TVD = _menuValueArray_int[2]; } digitalWrite(15, !(_trgr4)); _gtv12 = _trgr4; if (!(_gtv6)) { Menu_Value_4_TVD = _menuValueArray_int[0]; } digitalWrite(17, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) )); if (_gtv10) { _swi1 = String("Heater - ON"); } else { _swi1 = String("Heater - OFF"); } if (_gtv12) { _swi2 = String("Ventilation - ON"); } else { _swi2 = String("Ventilation - OFF"); } if (!(_gtv6)) { _dispTempLength2 = ((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))).length(); if (_disp3oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp3oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))); } else { if (_disp3oldLength > 0) { _isNeedClearDisp2 = 1; _disp3oldLength = 0; } } if (!(_gtv6)) { _dispTempLength2 = ((_swi1)).length(); if (_disp4oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp4oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((_swi1)); } else { if (_disp4oldLength > 0) { _isNeedClearDisp2 = 1; _disp4oldLength = 0; } } if (!(_gtv6)) { _dispTempLength2 = ((_swi2)).length(); if (_disp5oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp5oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 2); _lcd2.print((_swi2)); } else { if (_disp5oldLength > 0) { _isNeedClearDisp2 = 1; _disp5oldLength = 0; } } } String _floatToStringWitRaz(float value, int raz) { return String(value, raz); } void _menuUpEvents (byte menuIndex) { (_MainMenus[menuIndex]).tempString = ""; byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { (_MainMenus[menuIndex]).tempString = ""; byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 _menuEnterTheMenuEvents (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (!(itemType == 0)) { return; } byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]); if (newIndex == 0) { return; } (_MainMenus[menuIndex]).tempString = ""; (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1]; return; } void _menuExitFromMenuEvents (byte menuIndex) { byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); if (parIndex == 0) { return; } (_MainMenus[menuIndex]).tempString = ""; (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1]; return; } String _menuOutputValueString (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]); if (itemType == 0) { if ( valueStrIndex == 0) { return ""; } else { return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1]))); } } byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); if ( valIndex == 0) { return ""; } byte 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); } if (itemType == 5) { return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin); } return ""; } void _menuDirectInputKeyPressEvents(byte menuIndex, char inputSymbol) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte temp; if (valIndex == 0) { return; } byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (itemType == 7) { return; } if (itemType == 3) { (_MainMenus[menuIndex]).tempString = ""; } if (inputSymbol == '-') { temp = ((_MainMenus[menuIndex]).tempString).length() ; if (temp == 0) { (_MainMenus[menuIndex]).tempString = "-"; } else { if (((_MainMenus[menuIndex]).tempString).charAt(0) == '-') { (_MainMenus[menuIndex]).tempString = ((_MainMenus[menuIndex]).tempString).substring(1); } else { (_MainMenus[menuIndex]).tempString = "-" + (_MainMenus[menuIndex]).tempString; } } } else { (_MainMenus[menuIndex]).tempString = (_MainMenus[menuIndex]).tempString + inputSymbol; } if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = ((((_MainMenus[menuIndex]).tempString )).toInt()); } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = (((_MainMenus[menuIndex]).tempString )).toInt(); } if (itemType == 5) { _menuValueArray_long[valIndex - 1] = (((_MainMenus[menuIndex]).tempString ).toInt()); } } void _menuUpdateToEEpromItems() { EEPROM.updateLong(2, (_menuValueArray_long[1])); EEPROM.updateBit(1, 0, (_menuValueArray_bool[0])); EEPROM.updateInt(6, (_menuValueArray_int[0])); EEPROM.updateInt(8, (_menuValueArray_int[1])); EEPROM.updateInt(10, (_menuValueArray_int[2])); EEPROM.updateInt(12, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) { String result = String(""); while (pgm_read_byte(string) != '\0') { result = result + char(pgm_read_byte(string)); string++; } return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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); } } if (itemType == 5) { if (convFormat == 4) { return String((_menuValueArray_long[valIndex - 1 ]), DEC); } if (convFormat == 5) { return String((_menuValueArray_long[valIndex - 1]), HEX); } if (convFormat == 6) { return String((_menuValueArray_long[valIndex - 1]), BIN); } } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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]))); } }
#include <EEPROMex.h> #include <LiquidCrystal.h> #include <OneWire.h> LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7); int _dispTempLength1 = 0; boolean _isNeedClearDisp1; struct UB_142171746 { bool ubo_101667604 = 0; bool ubo_51674151 = 0; bool ubo_137412502 = 0; bool ubo_174461762 = 0; bool ubo_157422683 = 0; int _gtv1 = 0; int _gtv2 = 0; int _gtv3 = 0; int _gtv4 = 0; int _gtv5 = 0; bool _bounse1S = 0; bool _bounse1O = 0; unsigned long _bounse1P = 0UL; bool _bounse2S = 0; bool _bounse2O = 0; unsigned long _bounse2P = 0UL; bool _bounse3S = 0; bool _bounse3O = 0; unsigned long _bounse3P = 0UL; bool _bounse4S = 0; bool _bounse4O = 0; unsigned long _bounse4P = 0UL; bool _bounse5S = 0; bool _bounse5O = 0; unsigned long _bounse5P = 0UL; }; UB_142171746 UB_142171746_Instance1; int UB_142171746_ubi_125089190 = 0; OneWire _ow12(12); byte _FLPArray27618413[9]; const byte _menuParametrsArray[] PROGMEM = {1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 1, 9, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 6, 9, 0, 3, 3, 1, 0, 0, 0, 10, 11, 1, 8, 3, 0, 0, 4, 4, 2, 0, 0, 1, 0, 0, 1, 4, 4, 0, 8, 5, 4, 4, 0, 0, 1, 0, 0, 1, 4, 7, 0, 8, 6, 4, 1, 0, 0, 2, 0, 0, 1, 4, 2, 0, 8, 7, 4, 3, 0, 0, 2, 0, 0, 1, 4, 5, 0, 8}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[] PROGMEM = {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[] PROGMEM = {1}; const char _flprogMenuNameString1[] PROGMEM = "HeaterSetting"; const char _flprogMenuNameString2[] PROGMEM = "Vent-On"; const char _flprogMenuNameString3[] PROGMEM = "Sound"; const char _flprogMenuNameString4[] PROGMEM = "Heater-On"; const char _flprogMenuNameString5[] PROGMEM = "Vent-Off"; const char _flprogMenuNameString6[] PROGMEM = "Vent Setting"; const char _flprogMenuNameString7[] PROGMEM = "Heater-Off"; const char _flprogMenuNameString8[] PROGMEM = "C"; const char _flprogMenuNameString9[] PROGMEM = "Enter to submenu"; const char _flprogMenuNameString10[] PROGMEM = "On"; const char _flprogMenuNameString11[] PROGMEM = "Off"; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11}; struct _menuItemStricture { int startInArrayIndex; }; struct _menuMainStricture { byte startIndex; byte stopIndex; bool isSwitchMenuAroundRing; _menuItemStricture currentItem; }; _menuItemStricture _MenuItems[7]; _menuMainStricture _MainMenus[1]; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv6; bool _gtv7; bool _gtv8; bool _gtv9; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; int Menu_Value_3_TVD = 0; int Menu_Value_1_TVD = 0; String _swi2; bool _trgrt4 = 0; bool _trgrt4I = 0; String _swi1; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp1oldLength = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; int _disp3oldLength = 0; bool _sowb1_needScan = 0; bool _sowb1_ost = 0; bool _sowb1_FLPArray27618413 = 0; int Menu_Value_4_TVD = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; int Menu_Value_2_TVD = 0; int _disp4oldLength = 0; bool _trgr4 = 0; bool _trgr2 = 0; bool _trgr1 = 0; bool _trgr3 = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_AMMO = 0; bool _tim2I = 0; bool _tim2O = 0; unsigned long _tim2P = 0UL; bool _tim3I = 0; bool _tim3O = 0; unsigned long _tim3P = 0UL; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; unsigned long _d18x2x1Tti = 0UL; float _d18x2x1O = 0.00; int _disp2oldLength = 0; void setup() { if ((EEPROM.read(0)) != 97) { EEPROM.write(0, 97) ; EEPROM.updateInt(8, 25); EEPROM.updateBit(1, 0, 0); EEPROM.updateInt(4, 10); EEPROM.updateInt(6, 30); EEPROM.updateInt(2, 40); } pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(11, OUTPUT); _lcd1.begin(16, 2); _MenuItems[0].startInArrayIndex = 0; _MenuItems[1].startInArrayIndex = 13; _MenuItems[2].startInArrayIndex = 26; _MenuItems[3].startInArrayIndex = 39; _MenuItems[4].startInArrayIndex = 52; _MenuItems[5].startInArrayIndex = 65; _MenuItems[6].startInArrayIndex = 78; _MainMenus[0].startIndex = 1; _MainMenus[0].isSwitchMenuAroundRing = 1; _MainMenus[0].stopIndex = 3; _MainMenus[0].currentItem = _MenuItems[0]; _menuValueArray_int[0] = (EEPROM.readInt(2)); _menuValueArray_bool[0] = (EEPROM.readBit(1, 0)); _menuValueArray_int[1] = (EEPROM.readInt(4)); _menuValueArray_int[2] = (EEPROM.readInt(6)); _menuValueArray_int[3] = (EEPROM.readInt(8)); } void loop() { bool _tempVariable_bool; byte _tempVariable_byte; if (_isNeedClearDisp1) { _lcd1.clear(); _isNeedClearDisp1 = 0; } if (1) { if (_trgrt4I) { _trgrt4 = 0; } else { _trgrt4 = 1; _trgrt4I = 1; } } else { _trgrt4 = 0; _trgrt4I = 0; }; if (_isTimer(_d18x2x1Tti, 1000)) { _d18x2x1Tti = millis(); _d18x2x1O = _readDS18_ow12(_FLPArray27618413, _FLPArray27618413[8]); } if (_sowb1_needScan) { if ( _oneWireSeach (_FLPArray27618413, _ow12)) { _sowb1_FLPArray27618413 = 1; } _ow12.reset_search(); _sowb1_needScan = 0; } if (_trgrt4) { if (! _sowb1_ost) { _sowb1_ost = 1; _sowb1_needScan = 1; _sowb1_FLPArray27618413 = 0; } } else { _sowb1_ost = 0; } _gtv11 = (_d18x2x1O); UB_142171746_ubi_125089190 = (analogRead (0)); UB_142171746_Instance1 = _func_UB_142171746(UB_142171746_Instance1, UB_142171746_ubi_125089190, 96, 250, 402, 635); _gtv3 = UB_142171746_Instance1.ubo_101667604; _gtv4 = UB_142171746_Instance1.ubo_51674151; _gtv5 = UB_142171746_Instance1.ubo_137412502; _gtv2 = UB_142171746_Instance1.ubo_174461762; _gtv1 = UB_142171746_Instance1.ubo_157422683; if (_gtv1) { if (_tim1I) { if (_isTimer(_tim1P, 2000)) { _tim1O = 1; } } else { _tim1I = 1; _tim1P = millis(); } } else { _tim1O = 0; _tim1I = 0; } if (_tim2O) _trgr2 = 0; if (_tim1O) _trgr2 = 1; if (_trgr2) { if (_trgrt3I) { _trgrt3 = 0; } else { _trgrt3 = 1; _trgrt3I = 1; } } else { _trgrt3 = 0; _trgrt3I = 0; }; if (_trgrt1) { _tim2O = 1; _tim2I = 1; } else { if (_tim2I) { _tim2I = 0; _tim2P = millis(); } else { if (_tim2O) { if ( _isTimer(_tim2P, 200)) _tim2O = 0; } } } if (!(_gtv1)) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; }; _gtv8 = _trgrt3; _gtv7 = ( (!(_trgr2)) && (_trgrt1) ); if (1) { if (_tim3I) { if (_isTimer(_tim3P, 200)) { _tim3O = 1; } } else { _tim3I = 1; _tim3P = millis(); } } else { _tim3O = 0; _tim3I = 0; } if (!(_gtv7)) { if (_trgrt2I) { _trgrt2 = 0; } else { _trgrt2 = 1; _trgrt2I = 1; } } else { _trgrt2 = 0; _trgrt2I = 0; }; if (( (_gtv9) && (_gtv8) )) _trgr1 = 0; if (( (_tim3O) && (_trgrt2) )) _trgr1 = 1; _gtv6 = _trgr1; if (_gtv6) { _tempVariable_bool = 1; if ( ! _MenuBlock_47814740_OEIS ) { _MenuBlock_47814740_OEIS = 1; _MainMenus[0].currentItem = _MenuItems[0]; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]); _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_47814740_VNO = _menuOutputValueString (0); _MenuBlock_47814740_AMMO = (pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 5]) ) == 0; _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[0]).currentItem).startInArrayIndex) + 12]); if (_tempVariable_byte == 0 ) { _MenuBlock_47814740_ASO_1 = ""; } else { _MenuBlock_47814740_ASO_1 = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); } } else { _tempVariable_bool = 0; if (_MenuBlock_47814740_OEIS) { _MenuBlock_47814740_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_47814740_AMMO = 0; _MenuBlock_47814740_ASO_1 = ""; _MenuBlock_47814740_MNO = ""; _MenuBlock_47814740_VNO = ""; } if (_gtv4) { if ( ! _MenuBlock_47814740_OMUIS) { _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMUIS = 0; } if (_gtv5) { if ( ! _MenuBlock_47814740_OMDIS) { _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMDIS = 0; } if (( (_gtv7) && (_gtv6) )) { if ( ! _MenuBlock_47814740_OEMIS) { _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) { _menuEnterTheMenuEvents (0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OEMIS = 0; } if (_gtv8) { if ( ! _MenuBlock_47814740_OExFMIS) { _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) { _menuExitFromMenuEvents (0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OExFMIS = 0; } if (_gtv3) { if ( ! _MenuBlock_47814740_OVUIS) { _MenuBlock_47814740_OVUIS = 1; if (_tempVariable_bool) { _valueUpEvents(0); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueUpEvents(0); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVUIS = 0; if ( ! ( _gtv2)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv2) { if ( ! _MenuBlock_47814740_OVDIS) { _MenuBlock_47814740_OVDIS = 1; if (_tempVariable_bool) { _valueDownEvents(0); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueDownEvents(0); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVDIS = 0; if ( ! ( _gtv3)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv6) { _dispTempLength1 = ((_MenuBlock_47814740_MNO)).length(); if (_disp2oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp2oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 0); _lcd1.print((_MenuBlock_47814740_MNO)); } else { if (_disp2oldLength > 0) { _isNeedClearDisp1 = 1; _disp2oldLength = 0; } } if (_gtv6) { _dispTempLength1 = ((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))).length(); if (_disp1oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp1oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 1); _lcd1.print((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))); } else { if (_disp1oldLength > 0) { _isNeedClearDisp1 = 1; _disp1oldLength = 0; } } _gtv9 = _MenuBlock_47814740_AMMO; if ((_gtv11) > (Menu_Value_2_TVD)) _trgr3 = 0; if ((_gtv11) < (Menu_Value_1_TVD)) _trgr3 = 1; digitalWrite(2, !(_trgr3)); if (!(_gtv6)) { Menu_Value_1_TVD = _menuValueArray_int[1]; } _gtv10 = _trgr3; if (!(_gtv6)) { Menu_Value_2_TVD = _menuValueArray_int[3]; } if ((_gtv11) < (Menu_Value_4_TVD)) _trgr4 = 0; if ((_gtv11) > (Menu_Value_3_TVD)) _trgr4 = 1; if (!(_gtv6)) { Menu_Value_3_TVD = _menuValueArray_int[0]; } digitalWrite(3, !(_trgr4)); _gtv12 = _trgr4; if (!(_gtv6)) { Menu_Value_4_TVD = _menuValueArray_int[2]; } digitalWrite(11, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) )); if (_gtv10) { _swi1 = String("H - ON"); } else { _swi1 = String("H - OFF"); } if (_gtv12) { _swi2 = String("V - ON"); } else { _swi2 = String("V - OFF"); } if (!(_gtv6)) { _dispTempLength1 = ((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))).length(); if (_disp3oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp3oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 0); _lcd1.print((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))); } else { if (_disp3oldLength > 0) { _isNeedClearDisp1 = 1; _disp3oldLength = 0; } } if (!(_gtv6)) { _dispTempLength1 = ((((_swi1) + (String(" ")) + (_swi2)))).length(); if (_disp4oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp4oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 1); _lcd1.print((((_swi1) + (String(" ")) + (_swi2)))); } else { if (_disp4oldLength > 0) { _isNeedClearDisp1 = 1; _disp4oldLength = 0; } } } String _floatToStringWitRaz(float value, int raz) { return String(value, raz); } 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)); } } void _menuUpEvents (byte menuIndex) { byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1 ] = 1; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } } void _valueDownEvents (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = 0; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } } void _menuEnterTheMenuEvents (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (!(itemType == 0)) { return; } byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]); if (newIndex == 0) { return; } (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1]; return; } void _menuExitFromMenuEvents (byte menuIndex) { byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); if (parIndex == 0) { return; } (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1]; return; } String _menuOutputValueString (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]); if (itemType == 0) { if ( valueStrIndex == 0) { return ""; } else { return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1]))); } } byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); if ( valIndex == 0) { return ""; } byte 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() { EEPROM.updateInt(2, (_menuValueArray_int[0])); EEPROM.updateBit(1, 0, (_menuValueArray_bool[0])); EEPROM.updateInt(4, (_menuValueArray_int[1])); EEPROM.updateInt(6, (_menuValueArray_int[2])); EEPROM.updateInt(8, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) { String result = String(""); while (pgm_read_byte(string) != '\0') { result = result + char(pgm_read_byte(string)); string++; } return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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]))); } } float _convertDS18x2xData(byte type_s, byte data[12]) { int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; else if (cfg == 0x20) raw = raw & ~3; else if (cfg == 0x40) raw = raw & ~1; } return (float)raw / 16.0; } float _readDS18_ow12(byte addr[8], byte type_s) { byte data[12]; byte i; _ow12.reset(); _ow12.select(addr); _ow12.write(0xBE); for ( i = 0; i < 9; i++) { data[i] = _ow12.read(); } _ow12.reset(); _ow12.select(addr); _ow12.write(0x44, 1); return _convertDS18x2xData(type_s, data); } bool _oneWireSeach (byte array[], OneWire ow ) { byte temp[8]; byte i; if ( !ow.search(temp)) { return false; } if (OneWire::crc8(temp, 7) != temp[7]) { return false; } switch (temp[0]) { case 0x10: array[8] = 1; break; case 0x28: array[8] = 0; break; case 0x22: array[8] = 0; break; default: return false; } for ( i = 0; i < 8; i++) { array[i] = temp[i]; } return true; } struct UB_142171746 _func_UB_142171746(struct UB_142171746 _ubInstans, int ubi_125089190, int ubpar_125440348, int ubpar_79146376, int ubpar_175158211, int ubpar_40719224) { bool ubo_101667604 = _ubInstans.ubo_101667604; bool ubo_51674151 = _ubInstans.ubo_51674151; bool ubo_137412502 = _ubInstans.ubo_137412502; bool ubo_174461762 = _ubInstans.ubo_174461762; bool ubo_157422683 = _ubInstans.ubo_157422683; int _gtv1 = _ubInstans._gtv1; int _gtv2 = _ubInstans._gtv2; int _gtv3 = _ubInstans._gtv3; int _gtv4 = _ubInstans._gtv4; int _gtv5 = _ubInstans._gtv5; bool _bounse1S = _ubInstans._bounse1S; bool _bounse1O = _ubInstans._bounse1O; unsigned long _bounse1P = _ubInstans._bounse1P; bool _bounse2S = _ubInstans._bounse2S; bool _bounse2O = _ubInstans._bounse2O; unsigned long _bounse2P = _ubInstans._bounse2P; bool _bounse3S = _ubInstans._bounse3S; bool _bounse3O = _ubInstans._bounse3O; unsigned long _bounse3P = _ubInstans._bounse3P; bool _bounse4S = _ubInstans._bounse4S; bool _bounse4O = _ubInstans._bounse4O; unsigned long _bounse4P = _ubInstans._bounse4P; bool _bounse5S = _ubInstans._bounse5S; bool _bounse5O = _ubInstans._bounse5O; unsigned long _bounse5P = _ubInstans._bounse5P; bool _bounceTmpD1 = (ubi_125089190) < (_gtv1); if (_bounse1S) { if (millis() >= (_bounse1P + 40)) { _bounse1O = _bounceTmpD1; _bounse1S = 0; } } else { if ( _bounceTmpD1 != _bounse1O ) { _bounse1S = 1; _bounse1P = millis(); } } bool _bounceTmpD2 = ( ((ubi_125089190) > (_gtv1)) && ((ubi_125089190) < (_gtv2)) ); if (_bounse2S) { if (millis() >= (_bounse2P + 40)) { _bounse2O = _bounceTmpD2; _bounse2S = 0; } } else { if ( _bounceTmpD2 != _bounse2O ) { _bounse2S = 1; _bounse2P = millis(); } } bool _bounceTmpD3 = ( ((ubi_125089190) > (_gtv2)) && ((ubi_125089190) < (_gtv3)) ); if (_bounse3S) { if (millis() >= (_bounse3P + 40)) { _bounse3O = _bounceTmpD3; _bounse3S = 0; } } else { if ( _bounceTmpD3 != _bounse3O ) { _bounse3S = 1; _bounse3P = millis(); } } bool _bounceTmpD4 = ( ((ubi_125089190) > (_gtv3)) && ((ubi_125089190) < (_gtv4)) ); if (_bounse4S) { if (millis() >= (_bounse4P + 40)) { _bounse4O = _bounceTmpD4; _bounse4S = 0; } } else { if ( _bounceTmpD4 != _bounse4O ) { _bounse4S = 1; _bounse4P = millis(); } } bool _bounceTmpD5 = ( ((ubi_125089190) > (_gtv4)) && ((ubi_125089190) < (_gtv5)) ); if (_bounse5S) { if (millis() >= (_bounse5P + 40)) { _bounse5O = _bounceTmpD5; _bounse5S = 0; } } else { if ( _bounceTmpD5 != _bounse5O ) { _bounse5S = 1; _bounse5P = millis(); } } _gtv1 = (ubpar_125440348) / (2); _gtv2 = (((ubpar_79146376) - (ubpar_125440348)) / (2)) + (ubpar_125440348); _gtv3 = (((ubpar_175158211) - (ubpar_79146376)) / (2)) + (ubpar_79146376); _gtv4 = (((ubpar_40719224) - (ubpar_175158211)) / (2)) + (ubpar_175158211); _gtv5 = (((1023) - (ubpar_40719224)) / (2)) + (ubpar_40719224); ubo_101667604 = _bounse1O; ubo_51674151 = _bounse2O; ubo_137412502 = _bounse3O; ubo_174461762 = _bounse4O; ubo_157422683 = _bounse5O; _ubInstans.ubo_101667604 = ubo_101667604; _ubInstans.ubo_51674151 = ubo_51674151; _ubInstans.ubo_137412502 = ubo_137412502; _ubInstans.ubo_174461762 = ubo_174461762; _ubInstans.ubo_157422683 = ubo_157422683; _ubInstans._gtv1 = _gtv1; _ubInstans._gtv2 = _gtv2; _ubInstans._gtv3 = _gtv3; _ubInstans._gtv4 = _gtv4; _ubInstans._gtv5 = _gtv5; _ubInstans._bounse1S = _bounse1S; _ubInstans._bounse1O = _bounse1O; _ubInstans._bounse1P = _bounse1P; _ubInstans._bounse2S = _bounse2S; _ubInstans._bounse2O = _bounse2O; _ubInstans._bounse2P = _bounse2P; _ubInstans._bounse3S = _bounse3S; _ubInstans._bounse3O = _bounse3O; _ubInstans._bounse3P = _bounse3P; _ubInstans._bounse4S = _bounse4S; _ubInstans._bounse4O = _bounse4O; _ubInstans._bounse4P = _bounse4P; _ubInstans._bounse5S = _bounse5S; _ubInstans._bounse5O = _bounse5O; _ubInstans._bounse5P = _bounse5P; return _ubInstans; }
= {_flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11}; #include <EEPROMex.h> #include <LiquidCrystal.h> #include <OneWire.h> LiquidCrystal _lcd1(8, 9, 4, 5, 6, 7); int _dispTempLength1 = 0; boolean _isNeedClearDisp1; struct UB_142171746 { bool ubo_101667604 = 0; bool ubo_51674151 = 0; bool ubo_137412502 = 0; bool ubo_174461762 = 0; bool ubo_157422683 = 0; int _gtv1 = 0; int _gtv2 = 0; int _gtv3 = 0; int _gtv4 = 0; int _gtv5 = 0; bool _bounse1S = 0; bool _bounse1O = 0; unsigned long _bounse1P = 0UL; bool _bounse2S = 0; bool _bounse2O = 0; unsigned long _bounse2P = 0UL; bool _bounse3S = 0; bool _bounse3O = 0; unsigned long _bounse3P = 0UL; bool _bounse4S = 0; bool _bounse4O = 0; unsigned long _bounse4P = 0UL; bool _bounse5S = 0; bool _bounse5O = 0; unsigned long _bounse5P = 0UL; }; UB_142171746 UB_142171746_Instance1; int UB_142171746_ubi_125089190 = 0; OneWire _ow12(12); byte _FLPArray27618413[9]; const byte _menuParametrsArray[] PROGMEM = {1, 0, 0, 4, 5, 0, 0, 0, 0, 0, 1, 9, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 6, 9, 0, 3, 3, 1, 0, 0, 0, 10, 11, 1, 8, 3, 0, 0, 4, 4, 2, 0, 0, 1, 0, 0, 1, 4, 4, 0, 8, 5, 4, 4, 0, 0, 1, 0, 0, 1, 4, 7, 0, 8, 6, 4, 1, 0, 0, 2, 0, 0, 1, 4, 2, 0, 8, 7, 4, 3, 0, 0, 2, 0, 0, 1, 4, 5, 0, 8}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[] PROGMEM = {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[] PROGMEM = {1}; const char _flprogMenuNameString1[] PROGMEM = "HeaterSetting"; const char _flprogMenuNameString2[] PROGMEM = "Vent-On"; const char _flprogMenuNameString3[] PROGMEM = "Sound"; const char _flprogMenuNameString4[] PROGMEM = "Heater-On"; const char _flprogMenuNameString5[] PROGMEM = "Vent-Off"; const char _flprogMenuNameString6[] PROGMEM = "Vent Setting"; const char _flprogMenuNameString7[] PROGMEM = "Heater-Off"; const char _flprogMenuNameString8[] PROGMEM = "C"; const char _flprogMenuNameString9[] PROGMEM = "Enter to submenu"; const char _flprogMenuNameString10[] PROGMEM = "On"; const char _flprogMenuNameString11[] PROGMEM = "Off"; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11}; struct _menuItemStricture { int startInArrayIndex; }; struct _menuMainStricture { byte startIndex; byte stopIndex; bool isSwitchMenuAroundRing; _menuItemStricture currentItem; }; _menuItemStricture _MenuItems[7]; _menuMainStricture _MainMenus[1]; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv6; bool _gtv7; bool _gtv8; bool _gtv9; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; int Menu_Value_3_TVD = 0; int Menu_Value_1_TVD = 0; String _swi2; bool _trgrt4 = 0; bool _trgrt4I = 0; String _swi1; bool _trgrt1 = 0; bool _trgrt1I = 0; int _disp1oldLength = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; int _disp3oldLength = 0; bool _sowb1_needScan = 0; bool _sowb1_ost = 0; bool _sowb1_FLPArray27618413 = 0; int Menu_Value_4_TVD = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; int Menu_Value_2_TVD = 0; int _disp4oldLength = 0; bool _trgr4 = 0; bool _trgr2 = 0; bool _trgr1 = 0; bool _trgr3 = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_AMMO = 0; bool _tim2I = 0; bool _tim2O = 0; unsigned long _tim2P = 0UL; bool _tim3I = 0; bool _tim3O = 0; unsigned long _tim3P = 0UL; bool _tim1I = 0; bool _tim1O = 0; unsigned long _tim1P = 0UL; unsigned long _d18x2x1Tti = 0UL; float _d18x2x1O = 0.00; int _disp2oldLength = 0; void setup() { if ((EEPROM.read(0)) != 97) { EEPROM.write(0, 97) ; EEPROM.updateInt(8, 25); EEPROM.updateBit(1, 0, 0); EEPROM.updateInt(4, 10); EEPROM.updateInt(6, 30); EEPROM.updateInt(2, 40); } pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(11, OUTPUT); _lcd1.begin(16, 2); _MenuItems[0].startInArrayIndex = 0; _MenuItems[1].startInArrayIndex = 13; _MenuItems[2].startInArrayIndex = 26; _MenuItems[3].startInArrayIndex = 39; _MenuItems[4].startInArrayIndex = 52; _MenuItems[5].startInArrayIndex = 65; _MenuItems[6].startInArrayIndex = 78; _MainMenus[0].startIndex = 1; _MainMenus[0].isSwitchMenuAroundRing = 1; _MainMenus[0].stopIndex = 3; _MainMenus[0].currentItem = _MenuItems[0]; _menuValueArray_int[0] = (EEPROM.readInt(2)); _menuValueArray_bool[0] = (EEPROM.readBit(1, 0)); _menuValueArray_int[1] = (EEPROM.readInt(4)); _menuValueArray_int[2] = (EEPROM.readInt(6)); _menuValueArray_int[3] = (EEPROM.readInt(8)); } void loop() { bool _tempVariable_bool; byte _tempVariable_byte; if (_isNeedClearDisp1) { _lcd1.clear(); _isNeedClearDisp1 = 0; } if (1) { if (_trgrt4I) { _trgrt4 = 0; } else { _trgrt4 = 1; _trgrt4I = 1; } } else { _trgrt4 = 0; _trgrt4I = 0; }; if (_isTimer(_d18x2x1Tti, 1000)) { _d18x2x1Tti = millis(); _d18x2x1O = _readDS18_ow12(_FLPArray27618413, _FLPArray27618413[8]); } if (_sowb1_needScan) { if ( _oneWireSeach (_FLPArray27618413, _ow12)) { _sowb1_FLPArray27618413 = 1; } _ow12.reset_search(); _sowb1_needScan = 0; } if (_trgrt4) { if (! _sowb1_ost) { _sowb1_ost = 1; _sowb1_needScan = 1; _sowb1_FLPArray27618413 = 0; } } else { _sowb1_ost = 0; } _gtv11 = (_d18x2x1O); UB_142171746_ubi_125089190 = (analogRead (0)); UB_142171746_Instance1 = _func_UB_142171746(UB_142171746_Instance1, UB_142171746_ubi_125089190, 96, 250, 402, 635); _gtv3 = UB_142171746_Instance1.ubo_101667604; _gtv4 = UB_142171746_Instance1.ubo_51674151; _gtv5 = UB_142171746_Instance1.ubo_137412502; _gtv2 = UB_142171746_Instance1.ubo_174461762; _gtv1 = UB_142171746_Instance1.ubo_157422683; if (_gtv1) { if (_tim1I) { if (_isTimer(_tim1P, 2000)) { _tim1O = 1; } } else { _tim1I = 1; _tim1P = millis(); } } else { _tim1O = 0; _tim1I = 0; } if (_tim2O) _trgr2 = 0; if (_tim1O) _trgr2 = 1; if (_trgr2) { if (_trgrt3I) { _trgrt3 = 0; } else { _trgrt3 = 1; _trgrt3I = 1; } } else { _trgrt3 = 0; _trgrt3I = 0; }; if (_trgrt1) { _tim2O = 1; _tim2I = 1; } else { if (_tim2I) { _tim2I = 0; _tim2P = millis(); } else { if (_tim2O) { if ( _isTimer(_tim2P, 200)) _tim2O = 0; } } } if (!(_gtv1)) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; }; _gtv8 = _trgrt3; _gtv7 = ( (!(_trgr2)) && (_trgrt1) ); if (1) { if (_tim3I) { if (_isTimer(_tim3P, 200)) { _tim3O = 1; } } else { _tim3I = 1; _tim3P = millis(); } } else { _tim3O = 0; _tim3I = 0; } if (!(_gtv7)) { if (_trgrt2I) { _trgrt2 = 0; } else { _trgrt2 = 1; _trgrt2I = 1; } } else { _trgrt2 = 0; _trgrt2I = 0; }; if (( (_gtv9) && (_gtv8) )) _trgr1 = 0; if (( (_tim3O) && (_trgrt2) )) _trgr1 = 1; _gtv6 = _trgr1; if (_gtv6) { _tempVariable_bool = 1; if ( ! _MenuBlock_47814740_OEIS ) { _MenuBlock_47814740_OEIS = 1; _MainMenus[0].currentItem = _MenuItems[0]; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]); _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_47814740_VNO = _menuOutputValueString (0); _MenuBlock_47814740_AMMO = (pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 5]) ) == 0; _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[0]).currentItem).startInArrayIndex) + 12]); if (_tempVariable_byte == 0 ) { _MenuBlock_47814740_ASO_1 = ""; } else { _MenuBlock_47814740_ASO_1 = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); } } else { _tempVariable_bool = 0; if (_MenuBlock_47814740_OEIS) { _MenuBlock_47814740_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_47814740_AMMO = 0; _MenuBlock_47814740_ASO_1 = ""; _MenuBlock_47814740_MNO = ""; _MenuBlock_47814740_VNO = ""; } if (_gtv4) { if ( ! _MenuBlock_47814740_OMUIS) { _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMUIS = 0; } if (_gtv5) { if ( ! _MenuBlock_47814740_OMDIS) { _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMDIS = 0; } if (( (_gtv7) && (_gtv6) )) { if ( ! _MenuBlock_47814740_OEMIS) { _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) { _menuEnterTheMenuEvents (0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OEMIS = 0; } if (_gtv8) { if ( ! _MenuBlock_47814740_OExFMIS) { _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) { _menuExitFromMenuEvents (0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OExFMIS = 0; } if (_gtv3) { if ( ! _MenuBlock_47814740_OVUIS) { _MenuBlock_47814740_OVUIS = 1; if (_tempVariable_bool) { _valueUpEvents(0); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueUpEvents(0); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVUIS = 0; if ( ! ( _gtv2)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv2) { if ( ! _MenuBlock_47814740_OVDIS) { _MenuBlock_47814740_OVDIS = 1; if (_tempVariable_bool) { _valueDownEvents(0); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueDownEvents(0); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVDIS = 0; if ( ! ( _gtv3)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv6) { _dispTempLength1 = ((_MenuBlock_47814740_MNO)).length(); if (_disp2oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp2oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 0); _lcd1.print((_MenuBlock_47814740_MNO)); } else { if (_disp2oldLength > 0) { _isNeedClearDisp1 = 1; _disp2oldLength = 0; } } if (_gtv6) { _dispTempLength1 = ((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))).length(); if (_disp1oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp1oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 1); _lcd1.print((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))); } else { if (_disp1oldLength > 0) { _isNeedClearDisp1 = 1; _disp1oldLength = 0; } } _gtv9 = _MenuBlock_47814740_AMMO; if ((_gtv11) > (Menu_Value_2_TVD)) _trgr3 = 0; if ((_gtv11) < (Menu_Value_1_TVD)) _trgr3 = 1; digitalWrite(2, !(_trgr3)); if (!(_gtv6)) { Menu_Value_1_TVD = _menuValueArray_int[1]; } _gtv10 = _trgr3; if (!(_gtv6)) { Menu_Value_2_TVD = _menuValueArray_int[3]; } if ((_gtv11) < (Menu_Value_4_TVD)) _trgr4 = 0; if ((_gtv11) > (Menu_Value_3_TVD)) _trgr4 = 1; if (!(_gtv6)) { Menu_Value_3_TVD = _menuValueArray_int[0]; } digitalWrite(3, !(_trgr4)); _gtv12 = _trgr4; if (!(_gtv6)) { Menu_Value_4_TVD = _menuValueArray_int[2]; } digitalWrite(11, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) )); if (_gtv10) { _swi1 = String("H - ON"); } else { _swi1 = String("H - OFF"); } if (_gtv12) { _swi2 = String("V - ON"); } else { _swi2 = String("V - OFF"); } if (!(_gtv6)) { _dispTempLength1 = ((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))).length(); if (_disp3oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp3oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 0); _lcd1.print((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))); } else { if (_disp3oldLength > 0) { _isNeedClearDisp1 = 1; _disp3oldLength = 0; } } if (!(_gtv6)) { _dispTempLength1 = ((((_swi1) + (String(" ")) + (_swi2)))).length(); if (_disp4oldLength > _dispTempLength1) { _isNeedClearDisp1 = 1; } _disp4oldLength = _dispTempLength1; _lcd1.setCursor(int((16 - _dispTempLength1) / 2), 1); _lcd1.print((((_swi1) + (String(" ")) + (_swi2)))); } else { if (_disp4oldLength > 0) { _isNeedClearDisp1 = 1; _disp4oldLength = 0; } } } String _floatToStringWitRaz(float value, int raz) { return String(value, raz); } 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)); } } void _menuUpEvents (byte menuIndex) { byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1 ] = 1; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } } void _valueDownEvents (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = 0; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } } void _menuEnterTheMenuEvents (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (!(itemType == 0)) { return; } byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]); if (newIndex == 0) { return; } (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1]; return; } void _menuExitFromMenuEvents (byte menuIndex) { byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); if (parIndex == 0) { return; } (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1]; return; } String _menuOutputValueString (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]); if (itemType == 0) { if ( valueStrIndex == 0) { return ""; } else { return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1]))); } } byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); if ( valIndex == 0) { return ""; } byte 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() { EEPROM.updateInt(2, (_menuValueArray_int[0])); EEPROM.updateBit(1, 0, (_menuValueArray_bool[0])); EEPROM.updateInt(4, (_menuValueArray_int[1])); EEPROM.updateInt(6, (_menuValueArray_int[2])); EEPROM.updateInt(8, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) { String result = String(""); while (pgm_read_byte(string) != '\0') { result = result + char(pgm_read_byte(string)); string++; } return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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]))); } } float _convertDS18x2xData(byte type_s, byte data[12]) { int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; else if (cfg == 0x20) raw = raw & ~3; else if (cfg == 0x40) raw = raw & ~1; } return (float)raw / 16.0; } float _readDS18_ow12(byte addr[8], byte type_s) { byte data[12]; byte i; _ow12.reset(); _ow12.select(addr); _ow12.write(0xBE); for ( i = 0; i < 9; i++) { data[i] = _ow12.read(); } _ow12.reset(); _ow12.select(addr); _ow12.write(0x44, 1); return _convertDS18x2xData(type_s, data); } bool _oneWireSeach (byte array[], OneWire ow ) { byte temp[8]; byte i; if ( !ow.search(temp)) { return false; } if (OneWire::crc8(temp, 7) != temp[7]) { return false; } switch (temp[0]) { case 0x10: array[8] = 1; break; case 0x28: array[8] = 0; break; case 0x22: array[8] = 0; break; default: return false; } for ( i = 0; i < 8; i++) { array[i] = temp[i]; } return true; } struct UB_142171746 _func_UB_142171746(struct UB_142171746 _ubInstans, int ubi_125089190, int ubpar_125440348, int ubpar_79146376, int ubpar_175158211, int ubpar_40719224) { bool ubo_101667604 = _ubInstans.ubo_101667604; bool ubo_51674151 = _ubInstans.ubo_51674151; bool ubo_137412502 = _ubInstans.ubo_137412502; bool ubo_174461762 = _ubInstans.ubo_174461762; bool ubo_157422683 = _ubInstans.ubo_157422683; int _gtv1 = _ubInstans._gtv1; int _gtv2 = _ubInstans._gtv2; int _gtv3 = _ubInstans._gtv3; int _gtv4 = _ubInstans._gtv4; int _gtv5 = _ubInstans._gtv5; bool _bounse1S = _ubInstans._bounse1S; bool _bounse1O = _ubInstans._bounse1O; unsigned long _bounse1P = _ubInstans._bounse1P; bool _bounse2S = _ubInstans._bounse2S; bool _bounse2O = _ubInstans._bounse2O; unsigned long _bounse2P = _ubInstans._bounse2P; bool _bounse3S = _ubInstans._bounse3S; bool _bounse3O = _ubInstans._bounse3O; unsigned long _bounse3P = _ubInstans._bounse3P; bool _bounse4S = _ubInstans._bounse4S; bool _bounse4O = _ubInstans._bounse4O; unsigned long _bounse4P = _ubInstans._bounse4P; bool _bounse5S = _ubInstans._bounse5S; bool _bounse5O = _ubInstans._bounse5O; unsigned long _bounse5P = _ubInstans._bounse5P; bool _bounceTmpD1 = (ubi_125089190) < (_gtv1); if (_bounse1S) { if (millis() >= (_bounse1P + 40)) { _bounse1O = _bounceTmpD1; _bounse1S = 0; } } else { if ( _bounceTmpD1 != _bounse1O ) { _bounse1S = 1; _bounse1P = millis(); } } bool _bounceTmpD2 = ( ((ubi_125089190) > (_gtv1)) && ((ubi_125089190) < (_gtv2)) ); if (_bounse2S) { if (millis() >= (_bounse2P + 40)) { _bounse2O = _bounceTmpD2; _bounse2S = 0; } } else { if ( _bounceTmpD2 != _bounse2O ) { _bounse2S = 1; _bounse2P = millis(); } } bool _bounceTmpD3 = ( ((ubi_125089190) > (_gtv2)) && ((ubi_125089190) < (_gtv3)) ); if (_bounse3S) { if (millis() >= (_bounse3P + 40)) { _bounse3O = _bounceTmpD3; _bounse3S = 0; } } else { if ( _bounceTmpD3 != _bounse3O ) { _bounse3S = 1; _bounse3P = millis(); } } bool _bounceTmpD4 = ( ((ubi_125089190) > (_gtv3)) && ((ubi_125089190) < (_gtv4)) ); if (_bounse4S) { if (millis() >= (_bounse4P + 40)) { _bounse4O = _bounceTmpD4; _bounse4S = 0; } } else { if ( _bounceTmpD4 != _bounse4O ) { _bounse4S = 1; _bounse4P = millis(); } } bool _bounceTmpD5 = ( ((ubi_125089190) > (_gtv4)) && ((ubi_125089190) < (_gtv5)) ); if (_bounse5S) { if (millis() >= (_bounse5P + 40)) { _bounse5O = _bounceTmpD5; _bounse5S = 0; } } else { if ( _bounceTmpD5 != _bounse5O ) { _bounse5S = 1; _bounse5P = millis(); } } _gtv1 = (ubpar_125440348) / (2); _gtv2 = (((ubpar_79146376) - (ubpar_125440348)) / (2)) + (ubpar_125440348); _gtv3 = (((ubpar_175158211) - (ubpar_79146376)) / (2)) + (ubpar_79146376); _gtv4 = (((ubpar_40719224) - (ubpar_175158211)) / (2)) + (ubpar_175158211); _gtv5 = (((1023) - (ubpar_40719224)) / (2)) + (ubpar_40719224); ubo_101667604 = _bounse1O; ubo_51674151 = _bounse2O; ubo_137412502 = _bounse3O; ubo_174461762 = _bounse4O; ubo_157422683 = _bounse5O; _ubInstans.ubo_101667604 = ubo_101667604; _ubInstans.ubo_51674151 = ubo_51674151; _ubInstans.ubo_137412502 = ubo_137412502; _ubInstans.ubo_174461762 = ubo_174461762; _ubInstans.ubo_157422683 = ubo_157422683; _ubInstans._gtv1 = _gtv1; _ubInstans._gtv2 = _gtv2; _ubInstans._gtv3 = _gtv3; _ubInstans._gtv4 = _gtv4; _ubInstans._gtv5 = _gtv5; _ubInstans._bounse1S = _bounse1S; _ubInstans._bounse1O = _bounse1O; _ubInstans._bounse1P = _bounse1P; _ubInstans._bounse2S = _bounse2S; _ubInstans._bounse2O = _bounse2O; _ubInstans._bounse2P = _bounse2P; _ubInstans._bounse3S = _bounse3S; _ubInstans._bounse3O = _bounse3O; _ubInstans._bounse3P = _bounse3P; _ubInstans._bounse4S = _bounse4S; _ubInstans._bounse4O = _bounse4O; _ubInstans._bounse4P = _bounse4P; _ubInstans._bounse5S = _bounse5S; _ubInstans._bounse5O = _bounse5O; _ubInstans._bounse5P = _bounse5P; return _ubInstans; }
#include <Wire.h> #include <EEPROMex.h> #include <OneWire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C _lcd2(0x27, 20, 4); int _dispTempLength2 = 0; boolean _isNeedClearDisp2; OneWire _ow12(12); byte _FLPArray27618413[9]; const byte _menuParametrsArray[] PROGMEM = {1, 5, 1, 0, 0, 0, 0, 0, 1, 4, 1, 0, 0, 2, 0, 0, 6, 7, 0, 0, 0, 0, 0, 9, 11, 0, 3, 0, 0, 8, 9, 0, 0, 0, 0, 0, 7, 11, 0, 4, 3, 1, 0, 0, 0, 12, 13, 1, 8, 4, 0, 0, 5, 5, 2, 0, 0, 0, 0, 0, 1, 4, 2, 0, 0, 6, 4, 4, 0, 0, 2, 0, 0, 1, 4, 8, 0, 10, 7, 4, 2, 0, 0, 2, 0, 0, 1, 4, 5, 0, 10, 8, 4, 3, 0, 0, 3, 0, 0, 1, 4, 6, 0, 10, 9, 4, 1, 0, 0, 3, 0, 0, 1, 4, 3, 0, 10}; bool _menuValueArray_bool[1]; const bool _menuConstantValuesArray_bool[] PROGMEM = {1}; int _menuValueArray_int[4]; const int _menuConstantValuesArray_int[] PROGMEM = {1}; long _menuValueArray_long[2]; const long _menuConstantValuesArray_long[] PROGMEM = {1}; const char _flprogMenuNameString1[] PROGMEM = "Enter Password"; const char _flprogMenuNameString2[] PROGMEM = "ChangePassword"; const char _flprogMenuNameString3[] PROGMEM = "Vent-Off"; const char _flprogMenuNameString4[] PROGMEM = "Sound"; const char _flprogMenuNameString5[] PROGMEM = "Heater-Off"; const char _flprogMenuNameString6[] PROGMEM = "Vent-On"; const char _flprogMenuNameString7[] PROGMEM = "Vent Setting"; const char _flprogMenuNameString8[] PROGMEM = "Heater-On"; const char _flprogMenuNameString9[] PROGMEM = "HeaterSetting"; const char _flprogMenuNameString10[] PROGMEM = "C"; const char _flprogMenuNameString11[] PROGMEM = "Enter to submenu"; const char _flprogMenuNameString12[] PROGMEM = "On"; const char _flprogMenuNameString13[] PROGMEM = "Off"; const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1, _flprogMenuNameString2, _flprogMenuNameString3, _flprogMenuNameString4, _flprogMenuNameString5, _flprogMenuNameString6, _flprogMenuNameString7, _flprogMenuNameString8, _flprogMenuNameString9, _flprogMenuNameString10, _flprogMenuNameString11, _flprogMenuNameString12, _flprogMenuNameString13}; struct _menuItemStricture { int startInArrayIndex; }; struct _menuMainStricture { String tempString; byte startIndex; byte stopIndex; bool isSwitchMenuAroundRing; _menuItemStricture currentItem; }; _menuItemStricture _MenuItems[9]; _menuMainStricture _MainMenus[2]; bool _gtv6; bool _gtv10 = 0; float _gtv11; bool _gtv12 = 0; bool _gtv1; bool _gtv2; bool _gtv3; bool _gtv4; bool _gtv5; bool _gtv13; bool _gtv14; bool _gtv15; bool _gtv16; bool _gtv17; bool _gtv18; bool _gtv19; bool _gtv20; bool _gtv21; bool _gtv22; bool _gtv23; bool _gtv7; bool _gtv8; bool _trgr4 = 0; int Menu_Value_1_TVD = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; bool _trgt1 = 0; bool _trgt1I = 0; int _disp4oldLength = 0; String _MenuBlock_47814740_ASO_1; String _MenuBlock_47814740_MNO; String _MenuBlock_47814740_VNO; bool _MenuBlock_47814740_OEIS = 0; bool _MenuBlock_47814740_OMUIS = 0; bool _MenuBlock_47814740_OMDIS = 0; bool _MenuBlock_47814740_OEMIS = 0; bool _MenuBlock_47814740_OExFMIS = 0; bool _MenuBlock_47814740_OVUIS = 0; bool _MenuBlock_47814740_OVDIS = 0; unsigned long _MenuBlock_47814740_VUDST = 0UL; unsigned long _MenuBlock_47814740_VUDSPT = 0UL; byte _MenuBlock_47814740_VUDSM = 0; int _MenuBlock_47814740_VUDPT = 0; bool _MenuBlock_47814740_IDI_0 = 0; bool _MenuBlock_47814740_IDI_1 = 0; bool _MenuBlock_47814740_IDI_2 = 0; bool _MenuBlock_47814740_IDI_3 = 0; bool _MenuBlock_47814740_IDI_4 = 0; bool _MenuBlock_47814740_IDI_5 = 0; bool _MenuBlock_47814740_IDI_6 = 0; bool _MenuBlock_47814740_IDI_7 = 0; bool _MenuBlock_47814740_IDI_8 = 0; bool _MenuBlock_47814740_IDI_9 = 0; bool _MenuBlock_47814740MinusIOS = 0; bool _trgr1 = 0; bool _trgr3 = 0; bool _mkb1C1xP1 = 0; bool _mkb1C1xP2 = 0; bool _mkb1C1xP3 = 0; bool _mkb1C1xP4 = 0; bool _mkb1C2xP1 = 0; bool _mkb1C2xP2 = 0; bool _mkb1C2xP3 = 0; bool _mkb1C2xP4 = 0; bool _mkb1C3xP1 = 0; bool _mkb1C3xP2 = 0; bool _mkb1C3xP3 = 0; bool _mkb1C3xP4 = 0; bool _mkb1C4xP1 = 0; bool _mkb1C4xP2 = 0; bool _mkb1C4xP3 = 0; bool _mkb1C4xP4 = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; int Menu_Value_4_TVD = 0; int _disp7oldLength = 0; String _swi2; int _disp2oldLength = 0; String _MenuBlock_360159546_MNO; String _MenuBlock_360159546_VNO; bool _MenuBlock_360159546_OEIS = 0; bool _MenuBlock_360159546_OMUIS = 0; bool _MenuBlock_360159546_OMDIS = 0; bool _MenuBlock_360159546_OVUIS = 0; bool _MenuBlock_360159546_OVDIS = 0; bool _MenuBlock_360159546_IDI_0 = 0; bool _MenuBlock_360159546_IDI_1 = 0; bool _MenuBlock_360159546_IDI_2 = 0; bool _MenuBlock_360159546_IDI_3 = 0; bool _MenuBlock_360159546_IDI_4 = 0; bool _MenuBlock_360159546_IDI_5 = 0; bool _MenuBlock_360159546_IDI_6 = 0; bool _MenuBlock_360159546_IDI_7 = 0; bool _MenuBlock_360159546_IDI_8 = 0; bool _MenuBlock_360159546_IDI_9 = 0; int Menu_Value_3_TVD = 0; int Menu_Value_2_TVD = 0; String _swi1; int _disp1oldLength = 0; int _disp3oldLength = 0; int _disp6oldLength = 0; unsigned long _d18x2x1Tti = 0UL; float _d18x2x1O = 0.00; int _disp5oldLength = 0; bool _sowb1_needScan = 0; bool _sowb1_ost = 0; bool _sowb1_FLPArray27618413 = 0; void setup() { if ((EEPROM.read(0)) != 99) { EEPROM.write(0, 99) ; EEPROM.updateInt(10, 40); EEPROM.updateBit(1, 0, 0); EEPROM.updateInt(6, 30); EEPROM.updateInt(12, 10); EEPROM.updateLong(2, 123456); EEPROM.updateInt(8, 25); } Wire.begin(); pinMode(16, OUTPUT); pinMode(15, OUTPUT); pinMode(17, OUTPUT); _lcd2.init(); _lcd2.backlight(); pinMode(6, INPUT); digitalWrite(6, HIGH); pinMode(7, INPUT); digitalWrite(7, HIGH); pinMode(8, INPUT); digitalWrite(8, HIGH); pinMode(9, INPUT); digitalWrite(9, HIGH); pinMode(2, OUTPUT); digitalWrite(2, HIGH); pinMode(3, OUTPUT); digitalWrite(3, HIGH); pinMode(4, OUTPUT); digitalWrite(4, HIGH); pinMode(5, OUTPUT); digitalWrite(5, HIGH); _MenuItems[0].startInArrayIndex = 0; _MenuItems[1].startInArrayIndex = 13; _MenuItems[2].startInArrayIndex = 26; _MenuItems[3].startInArrayIndex = 39; _MenuItems[4].startInArrayIndex = 52; _MenuItems[5].startInArrayIndex = 65; _MenuItems[6].startInArrayIndex = 78; _MenuItems[7].startInArrayIndex = 91; _MenuItems[8].startInArrayIndex = 104; _MainMenus[0].tempString = ""; _MainMenus[0].startIndex = 1; _MainMenus[0].isSwitchMenuAroundRing = 0; _MainMenus[0].stopIndex = 1; _MainMenus[0].currentItem = _MenuItems[0]; _MainMenus[1].tempString = ""; _MainMenus[1].startIndex = 2; _MainMenus[1].isSwitchMenuAroundRing = 1; _MainMenus[1].stopIndex = 5; _MainMenus[1].currentItem = _MenuItems[1]; _menuValueArray_long[1] = (EEPROM.readLong(2)); _menuValueArray_int[0] = (EEPROM.readInt(6)); _menuValueArray_bool[0] = (EEPROM.readBit(1, 0)); _menuValueArray_int[1] = (EEPROM.readInt(8)); _menuValueArray_int[2] = (EEPROM.readInt(10)); _menuValueArray_int[3] = (EEPROM.readInt(12)); } void loop() { bool _tempVariable_bool; byte _tempVariable_byte; if (_isNeedClearDisp2) { _lcd2.clear(); _isNeedClearDisp2 = 0; } if (1) { if (_trgrt2I) { _trgrt2 = 0; } else { _trgrt2 = 1; _trgrt2I = 1; } } else { _trgrt2 = 0; _trgrt2I = 0; }; if (_isTimer(_d18x2x1Tti, 1000)) { _d18x2x1Tti = millis(); _d18x2x1O = _readDS18_ow12(_FLPArray27618413, _FLPArray27618413[8]); } if (_sowb1_needScan) { if ( _oneWireSeach (_FLPArray27618413, _ow12)) { _sowb1_FLPArray27618413 = 1; } _ow12.reset_search(); _sowb1_needScan = 0; } if (_trgrt2) { if (! _sowb1_ost) { _sowb1_ost = 1; _sowb1_needScan = 1; _sowb1_FLPArray27618413 = 0; } } else { _sowb1_ost = 0; } _gtv11 = (_d18x2x1O); digitalWrite(2, 0); _mkb1C1xP1 = ! (digitalRead(6)); _mkb1C1xP2 = ! (digitalRead(7)); _mkb1C1xP3 = ! (digitalRead(8)); _mkb1C1xP4 = ! (digitalRead(9)); digitalWrite(2, 1); digitalWrite(3, 0); _mkb1C2xP1 = ! (digitalRead(6)); _mkb1C2xP2 = ! (digitalRead(7)); _mkb1C2xP3 = ! (digitalRead(8)); _mkb1C2xP4 = ! (digitalRead(9)); digitalWrite(3, 1); digitalWrite(4, 0); _mkb1C3xP1 = ! (digitalRead(6)); _mkb1C3xP2 = ! (digitalRead(7)); _mkb1C3xP3 = ! (digitalRead(8)); _mkb1C3xP4 = ! (digitalRead(9)); digitalWrite(4, 1); digitalWrite(5, 0); _mkb1C4xP1 = ! (digitalRead(6)); _mkb1C4xP2 = ! (digitalRead(7)); _mkb1C4xP3 = ! (digitalRead(8)); _mkb1C4xP4 = ! (digitalRead(9)); digitalWrite(5, 1); _gtv1 = _mkb1C1xP1; _gtv2 = _mkb1C1xP2; _gtv3 = _mkb1C1xP3; _gtv18 = _mkb1C1xP4; _gtv4 = _mkb1C2xP1; _gtv5 = _mkb1C2xP2; _gtv13 = _mkb1C2xP3; _gtv19 = _mkb1C2xP4; _gtv14 = _mkb1C3xP1; _gtv15 = _mkb1C3xP2; _gtv16 = _mkb1C3xP3; _gtv20 = _mkb1C3xP4; _gtv23 = _mkb1C4xP1; _gtv17 = _mkb1C4xP2; _gtv22 = _mkb1C4xP3; _gtv21 = _mkb1C4xP4; bool _tmp1 = _gtv23; if (_tmp1) { if (! _trgt1I) _trgt1 = ! _trgt1; } _trgt1I = _tmp1; _gtv6 = _trgt1; if (_gtv7) { _tempVariable_bool = 1; if ( ! _MenuBlock_360159546_OEIS ) { _MenuBlock_360159546_OEIS = 1; (_MainMenus[0]).tempString = ""; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex) + 10]); _MenuBlock_360159546_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_360159546_VNO = _menuOutputValueString (0); } else { _tempVariable_bool = 0; if (_MenuBlock_360159546_OEIS) { _MenuBlock_360159546_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_360159546_MNO = ""; _MenuBlock_360159546_VNO = ""; } if (0) { if ( ! _MenuBlock_360159546_OMUIS) { _MenuBlock_360159546_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_360159546_OMUIS = 0; } if (0) { if ( ! _MenuBlock_360159546_OMDIS) { _MenuBlock_360159546_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(0); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_360159546_OMDIS = 0; } if (0) { if ( ! _MenuBlock_360159546_OVUIS) { _MenuBlock_360159546_OVUIS = 1; if (_tempVariable_bool) { _valueUpEvents(0); } } } else { _MenuBlock_360159546_OVUIS = 0; } if (0) { if ( ! _MenuBlock_360159546_OVDIS) { _MenuBlock_360159546_OVDIS = 1; if (_tempVariable_bool) { _valueDownEvents(0); } } } else { _MenuBlock_360159546_OVDIS = 0; } if (_gtv17) { if ( ! _MenuBlock_360159546_IDI_0) { _MenuBlock_360159546_IDI_0 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '0'); } } } else { _MenuBlock_360159546_IDI_0 = 0; } if (_gtv1) { if ( ! _MenuBlock_360159546_IDI_1) { _MenuBlock_360159546_IDI_1 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '1'); } } } else { _MenuBlock_360159546_IDI_1 = 0; } if (_gtv2) { if ( ! _MenuBlock_360159546_IDI_2) { _MenuBlock_360159546_IDI_2 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '2'); } } } else { _MenuBlock_360159546_IDI_2 = 0; } if (_gtv3) { if ( ! _MenuBlock_360159546_IDI_3) { _MenuBlock_360159546_IDI_3 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '3'); } } } else { _MenuBlock_360159546_IDI_3 = 0; } if (_gtv4) { if ( ! _MenuBlock_360159546_IDI_4) { _MenuBlock_360159546_IDI_4 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '4'); } } } else { _MenuBlock_360159546_IDI_4 = 0; } if (_gtv5) { if ( ! _MenuBlock_360159546_IDI_5) { _MenuBlock_360159546_IDI_5 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '5'); } } } else { _MenuBlock_360159546_IDI_5 = 0; } if (_gtv13) { if ( ! _MenuBlock_360159546_IDI_6) { _MenuBlock_360159546_IDI_6 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '6'); } } } else { _MenuBlock_360159546_IDI_6 = 0; } if (_gtv14) { if ( ! _MenuBlock_360159546_IDI_7) { _MenuBlock_360159546_IDI_7 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '7'); } } } else { _MenuBlock_360159546_IDI_7 = 0; } if (_gtv15) { if ( ! _MenuBlock_360159546_IDI_8) { _MenuBlock_360159546_IDI_8 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '8'); } } } else { _MenuBlock_360159546_IDI_8 = 0; } if (_gtv16) { if ( ! _MenuBlock_360159546_IDI_9) { _MenuBlock_360159546_IDI_9 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(0, '9'); } } } else { _MenuBlock_360159546_IDI_9 = 0; } if (_gtv7) { _dispTempLength2 = ((_MenuBlock_360159546_MNO)).length(); if (_disp6oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp6oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((_MenuBlock_360159546_MNO)); } else { if (_disp6oldLength > 0) { _isNeedClearDisp2 = 1; _disp6oldLength = 0; } } if (_gtv7) { _dispTempLength2 = ((_MenuBlock_360159546_VNO)).length(); if (_disp7oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp7oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((_MenuBlock_360159546_VNO)); } else { if (_disp7oldLength > 0) { _isNeedClearDisp2 = 1; _disp7oldLength = 0; } } if (_trgrt1) _trgr1 = 0; if (((_menuValueArray_long[0])) == ((_menuValueArray_long[1]))) _trgr1 = 1; if (!(_gtv6)) { if (_trgrt1I) { _trgrt1 = 0; } else { _trgrt1 = 1; _trgrt1I = 1; } } else { _trgrt1 = 0; _trgrt1I = 0; }; _gtv7 = ( (_gtv6) && (!(_trgr1)) ); _gtv8 = ( (_trgr1) && (_gtv6) ); if (_trgrt1) { _menuValueArray_long[0] = 0L; } if (_gtv8) { _tempVariable_bool = 1; if ( ! _MenuBlock_47814740_OEIS ) { _MenuBlock_47814740_OEIS = 1; _MainMenus[1].currentItem = _MenuItems[1]; (_MainMenus[1]).tempString = ""; } _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[1].currentItem ).startInArrayIndex) + 10]); _MenuBlock_47814740_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); _MenuBlock_47814740_VNO = _menuOutputValueString (1); _tempVariable_byte = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[1]).currentItem).startInArrayIndex) + 12]); if (_tempVariable_byte == 0 ) { _MenuBlock_47814740_ASO_1 = ""; } else { _MenuBlock_47814740_ASO_1 = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1]))); } } else { _tempVariable_bool = 0; if (_MenuBlock_47814740_OEIS) { _MenuBlock_47814740_OEIS = 0; _menuUpdateToEEpromItems(); } _MenuBlock_47814740_ASO_1 = ""; _MenuBlock_47814740_MNO = ""; _MenuBlock_47814740_VNO = ""; } if (_gtv20) { if ( ! _MenuBlock_47814740_OMUIS) { _MenuBlock_47814740_OMUIS = 1; if (_tempVariable_bool) { _menuUpEvents(1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMUIS = 0; } if (_gtv21) { if ( ! _MenuBlock_47814740_OMDIS) { _MenuBlock_47814740_OMDIS = 1; if (_tempVariable_bool) { _menuDownEvents(1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OMDIS = 0; } if (_gtv18) { if ( ! _MenuBlock_47814740_OEMIS) { _MenuBlock_47814740_OEMIS = 1; if (_tempVariable_bool) { _menuEnterTheMenuEvents (1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OEMIS = 0; } if (_gtv19) { if ( ! _MenuBlock_47814740_OExFMIS) { _MenuBlock_47814740_OExFMIS = 1; if (_tempVariable_bool) { _menuExitFromMenuEvents (1); _menuUpdateToEEpromItems(); } } } else { _MenuBlock_47814740_OExFMIS = 0; } if (0) { if ( ! _MenuBlock_47814740_OVUIS) { _MenuBlock_47814740_OVUIS = 1; if (_tempVariable_bool) { _valueUpEvents(1); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueUpEvents(1); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVUIS = 0; if ( ! ( 0)) { _MenuBlock_47814740_VUDSM = 0; } } if (0) { if ( ! _MenuBlock_47814740_OVDIS) { _MenuBlock_47814740_OVDIS = 1; if (_tempVariable_bool) { _valueDownEvents(1); _MenuBlock_47814740_VUDST = millis(); } } if (_tempVariable_bool) { if (_MenuBlock_47814740_VUDSM == 0) { if (_isTimer(_MenuBlock_47814740_VUDST , 2000 )) { _MenuBlock_47814740_VUDSM = 1; _MenuBlock_47814740_VUDSPT = millis(); _MenuBlock_47814740_VUDPT = 500; } } else { if (_MenuBlock_47814740_VUDSM == 1) { if (_isTimer(_MenuBlock_47814740_VUDST , 4000 )) { _MenuBlock_47814740_VUDSM = 2; _MenuBlock_47814740_VUDPT = 200; } } if (_isTimer(_MenuBlock_47814740_VUDSPT , _MenuBlock_47814740_VUDPT )) { _valueDownEvents(1); _MenuBlock_47814740_VUDSPT = millis(); } } } } else { _MenuBlock_47814740_OVDIS = 0; if ( ! ( 0)) { _MenuBlock_47814740_VUDSM = 0; } } if (_gtv17) { if ( ! _MenuBlock_47814740_IDI_0) { _MenuBlock_47814740_IDI_0 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '0'); } } } else { _MenuBlock_47814740_IDI_0 = 0; } if (_gtv1) { if ( ! _MenuBlock_47814740_IDI_1) { _MenuBlock_47814740_IDI_1 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '1'); } } } else { _MenuBlock_47814740_IDI_1 = 0; } if (_gtv2) { if ( ! _MenuBlock_47814740_IDI_2) { _MenuBlock_47814740_IDI_2 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '2'); } } } else { _MenuBlock_47814740_IDI_2 = 0; } if (_gtv3) { if ( ! _MenuBlock_47814740_IDI_3) { _MenuBlock_47814740_IDI_3 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '3'); } } } else { _MenuBlock_47814740_IDI_3 = 0; } if (_gtv4) { if ( ! _MenuBlock_47814740_IDI_4) { _MenuBlock_47814740_IDI_4 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '4'); } } } else { _MenuBlock_47814740_IDI_4 = 0; } if (_gtv5) { if ( ! _MenuBlock_47814740_IDI_5) { _MenuBlock_47814740_IDI_5 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '5'); } } } else { _MenuBlock_47814740_IDI_5 = 0; } if (_gtv13) { if ( ! _MenuBlock_47814740_IDI_6) { _MenuBlock_47814740_IDI_6 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '6'); } } } else { _MenuBlock_47814740_IDI_6 = 0; } if (_gtv14) { if ( ! _MenuBlock_47814740_IDI_7) { _MenuBlock_47814740_IDI_7 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '7'); } } } else { _MenuBlock_47814740_IDI_7 = 0; } if (_gtv15) { if ( ! _MenuBlock_47814740_IDI_8) { _MenuBlock_47814740_IDI_8 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '8'); } } } else { _MenuBlock_47814740_IDI_8 = 0; } if (_gtv16) { if ( ! _MenuBlock_47814740_IDI_9) { _MenuBlock_47814740_IDI_9 = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '9'); } } } else { _MenuBlock_47814740_IDI_9 = 0; } if (_gtv22) { if ( ! _MenuBlock_47814740MinusIOS) { _MenuBlock_47814740MinusIOS = 1; if (_tempVariable_bool) { _menuDirectInputKeyPressEvents(1, '-' ); } } } else { _MenuBlock_47814740MinusIOS = 0; } if (_gtv8) { _dispTempLength2 = ((_MenuBlock_47814740_MNO)).length(); if (_disp2oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp2oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((_MenuBlock_47814740_MNO)); } else { if (_disp2oldLength > 0) { _isNeedClearDisp2 = 1; _disp2oldLength = 0; } } if (_gtv8) { _dispTempLength2 = ((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))).length(); if (_disp1oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp1oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((((_MenuBlock_47814740_VNO) + (String(" ")) + (_MenuBlock_47814740_ASO_1)))); } else { if (_disp1oldLength > 0) { _isNeedClearDisp2 = 1; _disp1oldLength = 0; } } if ((_gtv11) > (Menu_Value_2_TVD)) _trgr3 = 0; if ((_gtv11) < (Menu_Value_1_TVD)) _trgr3 = 1; digitalWrite(16, !(_trgr3)); if (!(_gtv6)) { Menu_Value_1_TVD = _menuValueArray_int[3]; } _gtv10 = _trgr3; if (!(_gtv6)) { Menu_Value_2_TVD = _menuValueArray_int[1]; } if ((_gtv11) < (Menu_Value_4_TVD)) _trgr4 = 0; if ((_gtv11) > (Menu_Value_3_TVD)) _trgr4 = 1; if (!(_gtv6)) { Menu_Value_3_TVD = _menuValueArray_int[2]; } digitalWrite(15, !(_trgr4)); _gtv12 = _trgr4; if (!(_gtv6)) { Menu_Value_4_TVD = _menuValueArray_int[0]; } digitalWrite(17, ( (( (_gtv12) || (_gtv10) )) && ((_menuValueArray_bool[0])) )); if (_gtv10) { _swi1 = String("Heater - ON"); } else { _swi1 = String("Heater - OFF"); } if (_gtv12) { _swi2 = String("Ventilation - ON"); } else { _swi2 = String("Ventilation - OFF"); } if (!(_gtv6)) { _dispTempLength2 = ((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))).length(); if (_disp3oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp3oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 0); _lcd2.print((((String("Temp - ")) + (( _floatToStringWitRaz(_gtv11, 2))) + (String(" C"))))); } else { if (_disp3oldLength > 0) { _isNeedClearDisp2 = 1; _disp3oldLength = 0; } } if (!(_gtv6)) { _dispTempLength2 = ((_swi1)).length(); if (_disp4oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp4oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 1); _lcd2.print((_swi1)); } else { if (_disp4oldLength > 0) { _isNeedClearDisp2 = 1; _disp4oldLength = 0; } } if (!(_gtv6)) { _dispTempLength2 = ((_swi2)).length(); if (_disp5oldLength > _dispTempLength2) { _isNeedClearDisp2 = 1; } _disp5oldLength = _dispTempLength2; _lcd2.setCursor(int((20 - _dispTempLength2) / 2), 2); _lcd2.print((_swi2)); } else { if (_disp5oldLength > 0) { _isNeedClearDisp2 = 1; _disp5oldLength = 0; } } } String _floatToStringWitRaz(float value, int raz) { return String(value, raz); } 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)); } } void _menuUpEvents (byte menuIndex) { (_MainMenus[menuIndex]).tempString = ""; byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { (_MainMenus[menuIndex]).tempString = ""; byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); byte parentStartIndex; byte 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 (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1 ] = 1; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } if (itemType == 5) { _menuValueArray_long[valIndex - 1] = _menuValueArray_long[valIndex - 1] + (pgm_read_dword(&_menuConstantValuesArray_long[indexStep - 1])); } } void _valueDownEvents (byte menuIndex) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 8]); if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = 0; return; } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); } if (itemType == 5) { _menuValueArray_long[valIndex - 1] = _menuValueArray_long[valIndex - 1] - (pgm_read_dword(&_menuConstantValuesArray_long[indexStep - 1])); } } void _menuEnterTheMenuEvents (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (!(itemType == 0)) { return; } byte tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]); byte newIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[tempIndex - 1]).startInArrayIndex) + 3]); if (newIndex == 0) { return; } (_MainMenus[menuIndex]).tempString = ""; (_MainMenus[menuIndex]).currentItem = _MenuItems[newIndex - 1]; return; } void _menuExitFromMenuEvents (byte menuIndex) { byte parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 5]); if (parIndex == 0) { return; } (_MainMenus[menuIndex]).tempString = ""; (_MainMenus[menuIndex]).currentItem = _MenuItems[parIndex - 1]; return; } String _menuOutputValueString (byte menuIndex) { byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); byte valueStrIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 11]); if (itemType == 0) { if ( valueStrIndex == 0) { return ""; } else { return _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[valueStrIndex - 1]))); } } byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 7]); byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 6]); if ( valIndex == 0) { return ""; } byte 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); } if (itemType == 5) { return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin); } return ""; } void _menuDirectInputKeyPressEvents(byte menuIndex, char inputSymbol) { byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 2]); byte temp; if (valIndex == 0) { return; } byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex) + 1]); if (itemType == 7) { return; } if (itemType == 3) { (_MainMenus[menuIndex]).tempString = ""; } if (inputSymbol == '-') { temp = ((_MainMenus[menuIndex]).tempString).length() ; if (temp == 0) { (_MainMenus[menuIndex]).tempString = "-"; } else { if (((_MainMenus[menuIndex]).tempString).charAt(0) == '-') { (_MainMenus[menuIndex]).tempString = ((_MainMenus[menuIndex]).tempString).substring(1); } else { (_MainMenus[menuIndex]).tempString = "-" + (_MainMenus[menuIndex]).tempString; } } } else { (_MainMenus[menuIndex]).tempString = (_MainMenus[menuIndex]).tempString + inputSymbol; } if (itemType == 3) { _menuValueArray_bool[valIndex - 1] = ((((_MainMenus[menuIndex]).tempString )).toInt()); } if (itemType == 4) { _menuValueArray_int[valIndex - 1] = (((_MainMenus[menuIndex]).tempString )).toInt(); } if (itemType == 5) { _menuValueArray_long[valIndex - 1] = (((_MainMenus[menuIndex]).tempString ).toInt()); } } void _menuUpdateToEEpromItems() { EEPROM.updateLong(2, (_menuValueArray_long[1])); EEPROM.updateInt(6, (_menuValueArray_int[0])); EEPROM.updateBit(1, 0, (_menuValueArray_bool[0])); EEPROM.updateInt(8, (_menuValueArray_int[1])); EEPROM.updateInt(10, (_menuValueArray_int[2])); EEPROM.updateInt(12, (_menuValueArray_int[3])); } String _readStringFromProgmem (char *string) { String result = String(""); while (pgm_read_byte(string) != '\0') { result = result + char(pgm_read_byte(string)); string++; } return result; } String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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); } } if (itemType == 5) { if (convFormat == 4) { return String((_menuValueArray_long[valIndex - 1 ]), DEC); } if (convFormat == 5) { return String((_menuValueArray_long[valIndex - 1]), HEX); } if (convFormat == 6) { return String((_menuValueArray_long[valIndex - 1]), BIN); } } } String _convertBoolean(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte 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]))); } } float _convertDS18x2xData(byte type_s, byte data[12]) { int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; else if (cfg == 0x20) raw = raw & ~3; else if (cfg == 0x40) raw = raw & ~1; } return (float)raw / 16.0; } float _readDS18_ow12(byte addr[8], byte type_s) { byte data[12]; byte i; _ow12.reset(); _ow12.select(addr); _ow12.write(0xBE); for ( i = 0; i < 9; i++) { data[i] = _ow12.read(); } _ow12.reset(); _ow12.select(addr); _ow12.write(0x44, 1); return _convertDS18x2xData(type_s, data); } bool _oneWireSeach (byte array[], OneWire ow ) { byte temp[8]; byte i; if ( !ow.search(temp)) { return false; } if (OneWire::crc8(temp, 7) != temp[7]) { return false; } switch (temp[0]) { case 0x10: array[8] = 1; break; case 0x28: array[8] = 0; break; case 0x22: array[8] = 0; break; default: return false; } for ( i = 0; i < 8; i++) { array[i] = temp[i]; } return true; }
Source: https://habr.com/ru/post/399097/
All Articles