Создание меню с помощью программы FLProg15.11.2016 10:37
#include
#include
#include
#include
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;
}
© Geektimes