#include <Wire.h>
#include "flprogUtilites.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C _lcd1(0x27, 20, 4);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
int R_shunt_48176999_5;
float Voltage_48176999_5;
float Current_48176999_5;
float V_Shunt_48176999_5;
bool MAX_Current_48176999_5;
unsigned long old_time_48176999_5;
int R_shunt_48176999_1;
float Voltage_48176999_1;
float Current_48176999_1;
float V_Shunt_48176999_1;
bool MAX_Current_48176999_1;
unsigned long old_time_48176999_1;
int R_shunt_48176999_2;
float Voltage_48176999_2;
float Current_48176999_2;
float V_Shunt_48176999_2;
bool MAX_Current_48176999_2;
unsigned long old_time_48176999_2;
int R_shunt_48176999_3;
float Voltage_48176999_3;
float Current_48176999_3;
float V_Shunt_48176999_3;
bool MAX_Current_48176999_3;
unsigned long old_time_48176999_3;
const int _menuParametrsArray[]  PROGMEM =  {1, 8, 1, 0, 0, 0, 3, 6, 1, 1, 1, 0, 2, 8, 3, 0, 0, 0, 5, 7, 2, 0, 3, 0, 3, 8, 2, 0, 0, 0, 4, 3, 2, 2, 2, 0};
float _menuValueArray_float[3];
const float _menuConstantValuesArray_float[]  PROGMEM =  {1, 10, 20, 400, 140, 2, 70};
const char _flprogMenuNameString1[] PROGMEM = "Imax";
const char _flprogMenuNameString2[] PROGMEM = "Pmax";
const char _flprogMenuNameString3[] PROGMEM = "Tmax";
const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1,  _flprogMenuNameString2,  _flprogMenuNameString3};
struct _menuItemStricture 
{
     int startInArrayIndex;
}
;
struct _menuMainStricture 
{
    int startIndex;
    int stopIndex;
    bool isSwitchMenuAroundRing;
    _menuItemStricture  currentItem;
}
;
_menuItemStricture _MenuItems[3];
_menuMainStricture _MainMenus[1];
bool _gtv1;
int _disp14oldLength = 0;
int _disp13oldLength = 0;
float _Terminal_119287319;
int _disp4oldLength = 0;
int _disp2oldLength = 0;
int _disp17oldLength = 0;
int _disp1oldLength = 0;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
int _disp6oldLength = 0;
float _Terminal_148984842;
float _Terminal_228839435;
int _disp9oldLength = 0;
float _Terminal_141484625;
int _disp10oldLength = 0;
bool _bounseInputD5S = 0;
bool _bounseInputD5O = 0;
unsigned long _bounseInputD5P = 0UL;
int _disp3oldLength = 0;
int _disp12oldLength = 0;
float _Terminal_35266405;
bool _Terminal_165493977;
int _disp15oldLength = 0;
int _disp16oldLength = 0;
int _disp5oldLength = 0;
bool _bounseInputD7S = 0;
bool _bounseInputD7O = 0;
unsigned long _bounseInputD7P = 0UL;
bool _bounseInputD3S = 0;
bool _bounseInputD3O = 0;
unsigned long _bounseInputD3P = 0UL;
float _Terminal_203848668;
int _disp18oldLength = 0;
int _disp7oldLength = 0;
int _disp8oldLength = 0;
bool _Terminal_16150727;
float _Terminal_209363918;
bool _trgr1 = 0;
int _disp11oldLength = 0;
bool _bounseInputD4S = 0;
bool _bounseInputD4O = 0;
unsigned long _bounseInputD4P = 0UL;
bool _Terminal_264922681;
bool _count2I = 0;
bool _count2_SCST = 0;
int _count2_Value = 0;
bool _count2MaxLO = 0;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
String _MenuBlock_162677380_MNO;
String _MenuBlock_162677380_VNO;
bool _MenuBlock_162677380_OEIS = 0;
bool _MenuBlock_162677380_OMUIS = 0;
bool _MenuBlock_162677380_OMDIS = 0;
bool _MenuBlock_162677380_OVUIS = 0;
bool _MenuBlock_162677380_OVDIS = 0;
bool _bounseInputD2S = 0;
bool _bounseInputD2O = 0;
unsigned long _bounseInputD2P = 0UL;
bool _bounseInputD6S = 0;
bool _bounseInputD6O = 0;
unsigned long _bounseInputD6P = 0UL;
bool _tempVariable_bool;
int _tempVariable_int;
void setup()
{
    pinMode(2, INPUT_PULLUP);
    pinMode(3, INPUT_PULLUP);
    pinMode(7, INPUT_PULLUP);
    pinMode(6, INPUT_PULLUP);
    pinMode(5, INPUT_PULLUP);
    pinMode(4, INPUT_PULLUP);
    pinMode(8, OUTPUT);
    digitalWrite(8, 0);
    Wire.begin();
    delay(10);
    if(((readByteFromEEPROM(0, 0, 0x0))) != 165) 
    {
        (updateByteToEEPROM(0, 0, 0x0, (165)));
        (updateFloatToEEPROM(1, 0, 0x0, (2)));
        (updateFloatToEEPROM(5, 0, 0x0, (20)));
        (updateFloatToEEPROM(9, 0, 0x0, (70)));
    }
    _lcd1.init();
    _lcd1.backlight();
    _bounseInputD4O =    digitalRead(4);
    _bounseInputD3O =    digitalRead(3);
    _bounseInputD7O =    digitalRead(7);
    _bounseInputD5O =    digitalRead(5);
    _bounseInputD2O =    digitalRead(2);
    _bounseInputD6O =    digitalRead(6);
    Wire.begin();
    	delay(200);
    Wire.beginTransmission(64);
    Wire.write(0x00);
    Wire.write(0x39);
    Wire.write(0xE7);
    Wire.endTransmission();
    Wire.begin();
    	delay(200);
    Wire.beginTransmission(65);
    Wire.write(0x00);
    Wire.write(0x39);
    Wire.write(0xE7);
    Wire.endTransmission();
    Wire.begin();
    	delay(200);
    Wire.beginTransmission(66);
    Wire.write(0x00);
    Wire.write(0x39);
    Wire.write(0xE7);
    Wire.endTransmission();
    Wire.begin();
    	delay(200);
    Wire.beginTransmission(67);
    Wire.write(0x00);
    Wire.write(0x39);
    Wire.write(0xE7);
    Wire.endTransmission();
    _MenuItems[0].startInArrayIndex = 0;
    _MenuItems[1].startInArrayIndex = 12;
    _MenuItems[2].startInArrayIndex = 24;
    _MainMenus[0].startIndex = 1;
    _MainMenus[0].isSwitchMenuAroundRing = 1;
    _MainMenus[0].stopIndex = 3;
    _MainMenus[0].currentItem = _MenuItems[0];
    _menuValueArray_float[0] = (readFloatFromEEPROM(1, 0, 0x0));
    _menuValueArray_float[1] = (readFloatFromEEPROM(5, 0, 0x0));
    _menuValueArray_float[2] = (readFloatFromEEPROM(9, 0, 0x0));
}
void loop()
{
    if (_isNeedClearDisp1) 
    {
        _lcd1.clear();
        _isNeedClearDisp1= 0;
    }
    bool  _bounceInputTmpD2 =  (digitalRead (2));
    if (_bounseInputD2S)
    {
        if (millis() >= (_bounseInputD2P + 40))
        {
            _bounseInputD2O= _bounceInputTmpD2;
            _bounseInputD2S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD2 != _bounseInputD2O)
        {
            _bounseInputD2S=1;
            _bounseInputD2P = millis();
        }
    }
    bool  _bounceInputTmpD7 =  (digitalRead (7));
    if (_bounseInputD7S)
    {
        if (millis() >= (_bounseInputD7P + 40))
        {
            _bounseInputD7O= _bounceInputTmpD7;
            _bounseInputD7S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD7 != _bounseInputD7O)
        {
            _bounseInputD7S=1;
            _bounseInputD7P = millis();
        }
    }
    bool  _bounceInputTmpD5 =  (digitalRead (5));
    if (_bounseInputD5S)
    {
        if (millis() >= (_bounseInputD5P + 40))
        {
            _bounseInputD5O= _bounceInputTmpD5;
            _bounseInputD5S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD5 != _bounseInputD5O)
        {
            _bounseInputD5S=1;
            _bounseInputD5P = millis();
        }
    }
    bool  _bounceInputTmpD3 =  (digitalRead (3));
    if (_bounseInputD3S)
    {
        if (millis() >= (_bounseInputD3P + 40))
        {
            _bounseInputD3O= _bounceInputTmpD3;
            _bounseInputD3S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD3 != _bounseInputD3O)
        {
            _bounseInputD3S=1;
            _bounseInputD3P = millis();
        }
    }
    bool  _bounceInputTmpD6 =  (digitalRead (6));
    if (_bounseInputD6S)
    {
        if (millis() >= (_bounseInputD6P + 40))
        {
            _bounseInputD6O= _bounceInputTmpD6;
            _bounseInputD6S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD6 != _bounseInputD6O)
        {
            _bounseInputD6S=1;
            _bounseInputD6P = millis();
        }
    }
    bool  _bounceInputTmpD4 =  (digitalRead (4));
    if (_bounseInputD4S)
    {
        if (millis() >= (_bounseInputD4P + 40))
        {
            _bounseInputD4O= _bounceInputTmpD4;
            _bounseInputD4S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD4 != _bounseInputD4O)
        {
            _bounseInputD4S=1;
            _bounseInputD4P = millis();
        }
    }
    //Плата:1
//Наименование:ИЗМЕРЕНИЕ И ИНДИКАЦИЯ ПАРАМЕТРОВ ТРАНЗИСТОРОВ
    if (_gtv1)
    {
        _count2_Value = 0;
    }
     else 
    {
        if (!(_bounseInputD2O))
        {
            if (! _count2I) 
            {
                _count2I = 1;
                _count2_Value = _count2_Value + 1;
            }
        }
         else 
        {
            _count2I = 0;
        }
        if (!(_bounseInputD3O))
        {
            if (! _count2_SCST) 
            {
                _count2_SCST = 1;
                _count2_Value = _count2_Value - 1;
            }
        }
         else 
        {
            _count2_SCST = 0;
        }
    }
    _count2MaxLO = _count2_Value >= 5;
    _Terminal_165493977 = (_count2_Value) == (4);
    R_shunt_48176999_5 = 330;
    if (2000 < (millis() - old_time_48176999_5)) 
    {
        get_Parametr__48176999_5();
        old_time_48176999_5 = millis();
    }
    R_shunt_48176999_1 = 50;
    if (2000 < (millis() - old_time_48176999_1)) 
    {
        get_Parametr__48176999_1();
        old_time_48176999_1 = millis();
    }
    _Terminal_209363918 = ((24.00)-(Voltage_48176999_1))*(Current_48176999_1);
    R_shunt_48176999_2 = 330;
    if (2000 < (millis() - old_time_48176999_2)) 
    {
        get_Parametr__48176999_2();
        old_time_48176999_2 = millis();
    }
    if ((_count2_Value) == (1)) 
    {
        _dispTempLength1 = ((((String("P=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))*(Current_48176999_1),0))) + (String("W  ")) + (String("h21=")) + ((_floatToStringWitRaz(((Current_48176999_1)/(Current_48176999_2))*(-1.00),0))) + (String(""))))).length();
        if (_disp7oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp7oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 3);
        _lcd1.print((((String("P=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))*(Current_48176999_1),0))) + (String("W  ")) + (String("h21=")) + ((_floatToStringWitRaz(((Current_48176999_1)/(Current_48176999_2))*(-1.00),0))) + (String("")))));
    }
     else 
    {
        if (_disp7oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp7oldLength = 0;
        }
    }
    if ((_count2_Value) == (3)) 
    {
        _dispTempLength1 = ((((String("Rds=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))/(Current_48176999_1),1))) + (String("Ohm"))))).length();
        if (_disp17oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp17oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 3);
        _lcd1.print((((String("Rds=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))/(Current_48176999_1),1))) + (String("Ohm")))));
    }
     else 
    {
        if (_disp17oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp17oldLength = 0;
        }
    }
    _Terminal_264922681 = (_count2_Value) == (3);
    _Terminal_203848668 = ((24.00)-(Voltage_48176999_1))*(Current_48176999_1);
    if ((_count2_Value) == (0)) 
    {
        _dispTempLength1 = ((((String("P=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))*(Current_48176999_1),0))) + (String("W  ")) + (String("h21=")) + ((_floatToStringWitRaz((Current_48176999_1)/(Current_48176999_5),0))) + (String(""))))).length();
        if (_disp6oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp6oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 3);
        _lcd1.print((((String("P=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))*(Current_48176999_1),0))) + (String("W  ")) + (String("h21=")) + ((_floatToStringWitRaz((Current_48176999_1)/(Current_48176999_5),0))) + (String("")))));
    }
     else 
    {
        if (_disp6oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp6oldLength = 0;
        }
    }
    _Terminal_228839435 = ((analogRead (0)))/(42.6);
    R_shunt_48176999_3 = 50;
    if (2000 < (millis() - old_time_48176999_3)) 
    {
        get_Parametr__48176999_3();
        old_time_48176999_3 = millis();
    }
    _Terminal_16150727 = (_count2_Value) == (2);
    if ((_count2_Value) == (2)) 
    {
        _dispTempLength1 = ((((String("P=")) + ((_floatToStringWitRaz((Voltage_48176999_3)*((Current_48176999_3)*(-1.00)),0))) + (String("W ")) + (String("Ugs=")) + ((_floatToStringWitRaz(((analogRead (0)))/(42.6),1))) + (String("V"))))).length();
        if (_disp9oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp9oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 2);
        _lcd1.print((((String("P=")) + ((_floatToStringWitRaz((Voltage_48176999_3)*((Current_48176999_3)*(-1.00)),0))) + (String("W ")) + (String("Ugs=")) + ((_floatToStringWitRaz(((analogRead (0)))/(42.6),1))) + (String("V")))));
    }
     else 
    {
        if (_disp9oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp9oldLength = 0;
        }
    }
    if ((_count2_Value) == (2)) 
    {
        _dispTempLength1 = ((String("N-CHANNEL"))).length();
        if (_disp8oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp8oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 0);
        _lcd1.print((String("N-CHANNEL")));
    }
     else 
    {
        if (_disp8oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp8oldLength = 0;
        }
    }
    if ((_count2_Value) == (2)) 
    {
        _dispTempLength1 = ((((String("Ud=")) + ((_floatToStringWitRaz(Voltage_48176999_3,2))) + (String("V ")) + (String("Id=")) + ((_floatToStringWitRaz((Current_48176999_3)*(-1.00),2))) + (String("A "))))).length();
        if (_disp3oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp3oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 1);
        _lcd1.print((((String("Ud=")) + ((_floatToStringWitRaz(Voltage_48176999_3,2))) + (String("V ")) + (String("Id=")) + ((_floatToStringWitRaz((Current_48176999_3)*(-1.00),2))) + (String("A ")))));
    }
     else 
    {
        if (_disp3oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp3oldLength = 0;
        }
    }
    if ((_count2_Value) == (2)) 
    {
        _dispTempLength1 = ((((String("Rds=")) + ((_floatToStringWitRaz((Voltage_48176999_3)/((Current_48176999_3)*(-1.00)),2))) + (String("Ohm"))))).length();
        if (_disp16oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp16oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 3);
        _lcd1.print((((String("Rds=")) + ((_floatToStringWitRaz((Voltage_48176999_3)/((Current_48176999_3)*(-1.00)),2))) + (String("Ohm")))));
    }
     else 
    {
        if (_disp16oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp16oldLength = 0;
        }
    }
    _Terminal_119287319 = (Current_48176999_3)*(-1.00);
    _Terminal_148984842 = (Voltage_48176999_3)*((Current_48176999_3)*(-1.00));
    _Terminal_35266405 = (((analogRead (0)))/(42.6))-(24.00);
    if ((_count2_Value) == (3)) 
    {
        _dispTempLength1 = ((((String("P=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))*(Current_48176999_1),0))) + (String("W  ")) + (String("Ugs=")) + ((_floatToStringWitRaz((((analogRead (0)))/(42.6))-(24.00),1))) + (String("V"))))).length();
        if (_disp12oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp12oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 2);
        _lcd1.print((((String("P=")) + ((_floatToStringWitRaz(((24.00)-(Voltage_48176999_1))*(Current_48176999_1),0))) + (String("W  ")) + (String("Ugs=")) + ((_floatToStringWitRaz((((analogRead (0)))/(42.6))-(24.00),1))) + (String("V")))));
    }
     else 
    {
        if (_disp12oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp12oldLength = 0;
        }
    }
    if ((_count2_Value) == (3)) 
    {
        _dispTempLength1 = ((String("P-CHANNEL"))).length();
        if (_disp10oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp10oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 0);
        _lcd1.print((String("P-CHANNEL")));
    }
     else 
    {
        if (_disp10oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp10oldLength = 0;
        }
    }
    if ((_count2_Value) == (3)) 
    {
        _dispTempLength1 = ((((String("Uds=")) + ((_floatToStringWitRaz((24.00)-(Voltage_48176999_1),2))) + (String("V ")) + (String("Id=")) + ((_floatToStringWitRaz(Current_48176999_1,2))) + (String("A "))))).length();
        if (_disp11oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp11oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 1);
        _lcd1.print((((String("Uds=")) + ((_floatToStringWitRaz((24.00)-(Voltage_48176999_1),2))) + (String("V ")) + (String("Id=")) + ((_floatToStringWitRaz(Current_48176999_1,2))) + (String("A ")))));
    }
     else 
    {
        if (_disp11oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp11oldLength = 0;
        }
    }
    if ((((_count2_Value) == (0)) || ((_count2_Value) == (1)))) 
    {
        _dispTempLength1 = ((((String("Uce=")) + ((_floatToStringWitRaz((24.00)-(Voltage_48176999_1),2))) + (String("V ")) + (String("Ic=")) + ((_floatToStringWitRaz(Current_48176999_1,2))) + (String("A "))))).length();
        if (_disp1oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp1oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 2);
        _lcd1.print((((String("Uce=")) + ((_floatToStringWitRaz((24.00)-(Voltage_48176999_1),2))) + (String("V ")) + (String("Ic=")) + ((_floatToStringWitRaz(Current_48176999_1,2))) + (String("A ")))));
    }
     else 
    {
        if (_disp1oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp1oldLength = 0;
        }
    }
    if ((_count2_Value) == (1)) 
    {
        _dispTempLength1 = ((((String("PNP ")) + (String("Ube=")) + ((_floatToStringWitRaz((Voltage_48176999_2)-(24.00),1))) + (String("V"))))).length();
        if (_disp5oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp5oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 0);
        _lcd1.print((((String("PNP ")) + (String("Ube=")) + ((_floatToStringWitRaz((Voltage_48176999_2)-(24.00),1))) + (String("V")))));
    }
     else 
    {
        if (_disp5oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp5oldLength = 0;
        }
    }
    if ((_count2_Value) == (1)) 
    {
        _dispTempLength1 = ((((String("Ub=")) + ((_floatToStringWitRaz(Voltage_48176999_2,2))) + (String("V ")) + (String("Ib=")) + ((_floatToStringWitRaz(Current_48176999_2,3))) + (String("A "))))).length();
        if (_disp2oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp2oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 1);
        _lcd1.print((((String("Ub=")) + ((_floatToStringWitRaz(Voltage_48176999_2,2))) + (String("V ")) + (String("Ib=")) + ((_floatToStringWitRaz(Current_48176999_2,3))) + (String("A ")))));
    }
     else 
    {
        if (_disp2oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp2oldLength = 0;
        }
    }
    if ((_count2_Value) == (0)) 
    {
        _dispTempLength1 = ((((String("NPN ")) + (String("Ube=")) + ((_floatToStringWitRaz((Voltage_48176999_5)-(Voltage_48176999_1),1))) + (String("V"))))).length();
        if (_disp4oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp4oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 0);
        _lcd1.print((((String("NPN ")) + (String("Ube=")) + ((_floatToStringWitRaz((Voltage_48176999_5)-(Voltage_48176999_1),1))) + (String("V")))));
    }
     else 
    {
        if (_disp4oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp4oldLength = 0;
        }
    }
    if ((_count2_Value) == (0)) 
    {
        _dispTempLength1 = ((((String("Ub=")) + ((_floatToStringWitRaz(Voltage_48176999_5,2))) + (String("V ")) + (String("Ib=")) + ((_floatToStringWitRaz(Current_48176999_5,3))) + (String("A "))))).length();
        if (_disp14oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp14oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 1);
        _lcd1.print((((String("Ub=")) + ((_floatToStringWitRaz(Voltage_48176999_5,2))) + (String("V ")) + (String("Ib=")) + ((_floatToStringWitRaz(Current_48176999_5,3))) + (String("A ")))));
    }
     else 
    {
        if (_disp14oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp14oldLength = 0;
        }
    }
    _gtv1 = _count2MaxLO;
    if (!(0)) 
    {
        _dispTempLength1 = ((((String("T=")) + ((_floatToStringWitRaz(((analogRead (1)))/(2.048),0))) + (String("C"))))).length();
        if (_disp13oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp13oldLength = _dispTempLength1;
        _lcd1.setCursor(14, 0);
        _lcd1.print((((String("T=")) + ((_floatToStringWitRaz(((analogRead (1)))/(2.048),0))) + (String("C")))));
    }
     else 
    {
        if (_disp13oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp13oldLength = 0;
        }
    }
    _Terminal_141484625 = ((analogRead (1)))/(2.048);
    //Плата:2
//Наименование:MENU
    if (_Terminal_165493977) 
    {
        _dispTempLength1 = ((String("MENU"))).length();
        if (_disp18oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp18oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 0);
        _lcd1.print((String("MENU")));
    }
     else 
    {
        if (_disp18oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp18oldLength = 0;
        }
    }
    if (!(0)) 
    {
        _tempVariable_bool  =  1;
        if (! _MenuBlock_162677380_OEIS) 
        {
            _MenuBlock_162677380_OEIS = 1;
        }
        _tempVariable_int = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem).startInArrayIndex)+10]);
        _MenuBlock_162677380_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_int - 1])));
        _MenuBlock_162677380_VNO = _menuOutputValueString (0);
    }
     else 
    {
        _tempVariable_bool  =  0;
        if (_MenuBlock_162677380_OEIS)
        {
            _MenuBlock_162677380_OEIS = 0;
        }
        _MenuBlock_162677380_MNO = "";
        _MenuBlock_162677380_VNO = "";
    }
    if(!(_bounseInputD7O)) 
    {
         if (! _MenuBlock_162677380_OMUIS) 
        {
            _MenuBlock_162677380_OMUIS = 1;
            if(_tempVariable_bool)
            {
                  _menuUpEvents(0);
            }
        }
    }
     else 
    {
        _MenuBlock_162677380_OMUIS = 0;
    }
    if(!(_bounseInputD6O)) 
    {
         if (! _MenuBlock_162677380_OMDIS) 
        {
            _MenuBlock_162677380_OMDIS = 1;
            if(_tempVariable_bool)
            {
                   _menuDownEvents(0);
            }
        }
    }
     else 
    {
        _MenuBlock_162677380_OMDIS = 0;
    }
    if(!(_bounseInputD5O)) 
    {
         if (! _MenuBlock_162677380_OVUIS) 
        {
            _MenuBlock_162677380_OVUIS = 1;
            if(_tempVariable_bool)
            {
                _valueUpEvents(0);
                _menuUpdateToEEpromItems();
            }
        }
    }
     else 
    {
        _MenuBlock_162677380_OVUIS = 0;
    }
    if(!(_bounseInputD4O)) 
    {
         if (! _MenuBlock_162677380_OVDIS) 
        {
            _MenuBlock_162677380_OVDIS = 1;
            if(_tempVariable_bool)
            {
                _valueDownEvents(0);
                _menuUpdateToEEpromItems();
            }
        }
    }
     else 
    {
        _MenuBlock_162677380_OVDIS = 0;
    }
    if (_Terminal_165493977) 
    {
        _dispTempLength1 = ((((_MenuBlock_162677380_MNO) + (String("  ")) + (_MenuBlock_162677380_VNO)))).length();
        if (_disp15oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp15oldLength = _dispTempLength1;
        _lcd1.setCursor(0, 1);
        _lcd1.print((((_MenuBlock_162677380_MNO) + (String("  ")) + (_MenuBlock_162677380_VNO))));
    }
     else 
    {
        if (_disp15oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp15oldLength = 0;
        }
    }
    if ((((Current_48176999_1) >= ((_menuValueArray_float[0]))) || ((_Terminal_141484625) >= ((_menuValueArray_float[2]))) || ((_Terminal_203848668) >= ((_menuValueArray_float[1]))) || ((_Terminal_209363918) >= ((_menuValueArray_float[1]))) || ((_Terminal_148984842) >= ((_menuValueArray_float[1]))))) 
    {
        if (! _gen1I)
        {
            _gen1I = 1;
            _gen1O = 1;
            _gen1P = millis();
        }
    }
     else 
    {
        _gen1I = 0 ;
        _gen1O= 0;
    }
     if (_gen1I &&  _gen1O)   _gen1O = !(flprog::isTimer(_gen1P , 300));
    if (!(0)) 
    {
         if (_trgrt1I) 
        {
             _trgrt1 = 0;
        }
         else 
        {
            _trgrt1 = 1;
            _trgrt1I = 1;
        }
    }
     else 
    {
        _trgrt1 = 0;
        _trgrt1I = 0;
    }
    ;
    if(_trgrt1) _trgr1 = 0;
    if(_gen1O) _trgr1 = 1;
    digitalWrite(8, _trgr1);
}
String  _floatToStringWitRaz(float value, int raz)
{
    return String(value,raz);
}
String _readStringFromProgmem (char *string)
{
    String result = String("");
    while (pgm_read_byte(string)!='\0')
    {
        result=result+ char(pgm_read_byte(string));
        	string++;
        	
    }
    return result;
}
void _menuUpEvents (int menuIndex)
{
    int tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);
    int parIndex = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+5]);
    int parentStartIndex;
    int parentStopIndex;
    if (parIndex == 0) 
    {
        parentStartIndex = (_MainMenus[menuIndex]).startIndex;
        parentStopIndex =(_MainMenus[menuIndex]).stopIndex;
    }
    else 
    {
        parentStartIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex - 1]).startInArrayIndex)+3]);
        parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex-1]).startInArrayIndex)+4]);
    }
    if (tempIndex == parentStartIndex) 
    {
        if((_MainMenus[menuIndex]).isSwitchMenuAroundRing) 
        {
            (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStopIndex -1];
            return;
        }
         else
        {
            return;
        }
    }
    (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex - 2];
    return;
}
void _menuDownEvents (int menuIndex)
{
    int tempIndex = pgm_read_byte(&_menuParametrsArray[((_MainMenus[menuIndex]).currentItem).startInArrayIndex]);
    int parIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+5]);
    int parentStartIndex;
    int parentStopIndex;
    if (parIndex == 0) 
    {
        parentStartIndex = (_MainMenus[menuIndex]).startIndex;
        parentStopIndex =(_MainMenus[menuIndex]).stopIndex;
    }
    else 
    {
        parentStartIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex-1]).startInArrayIndex)+3]);
        parentStopIndex = pgm_read_byte(&_menuParametrsArray[((_MenuItems[parIndex-1]).startInArrayIndex)+4]);
    }
    if (tempIndex == parentStopIndex) 
    {
        if((_MainMenus[menuIndex]).isSwitchMenuAroundRing) 
        {
            (_MainMenus[menuIndex]).currentItem = _MenuItems[parentStartIndex -1];
            return;
        }
         else
        {
            return;
        }
    }
    (_MainMenus[menuIndex]).currentItem = _MenuItems[tempIndex];
    return;
}
void _valueUpEvents (int menuIndex)
{
    int valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);
    int itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);
    int indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+6]);
    int indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+8]);
    if (itemType == 8) 
    {
        if (! indexMax == 0) 
        {
             if (! (float(pgm_read_float(&_menuConstantValuesArray_float[indexMax -1])) > float(_menuValueArray_float[valIndex -1]))) 
            {
                return;
            }
        }
        _menuValueArray_float[valIndex -1] = _menuValueArray_float[valIndex -1] + (pgm_read_float(&_menuConstantValuesArray_float[indexStep -1]));
    }
}
void _valueDownEvents (int menuIndex)
{
    int valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);
    int itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);
    int indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+7]);
    int indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+8]);
    if (itemType == 8) 
    {
        if (! indexMin == 0) 
        {
             if (! ((float(pgm_read_float(&_menuConstantValuesArray_float[indexMin - 1]))) < float(_menuValueArray_float[valIndex - 1]))) 
            {
                return;
            }
        }
        _menuValueArray_float[valIndex - 1] = _menuValueArray_float[valIndex - 1] - (pgm_read_float(&_menuConstantValuesArray_float[indexStep - 1]));
    }
}
String _menuOutputValueString (int menuIndex)
{
    int itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);
    int valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);
    int indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+7]);
    int indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+6]);
    if(valIndex == 0)
    {
         return "";
    }
    int convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+9]);
    if(itemType == 8) 
    {
         return _convertFloat(itemType, convFormat, valIndex, indexMax, indexMin);
    }
    return "";
}
void _menuUpdateToEEpromItems()
{
    (updateFloatToEEPROM(1, 0, 0x0, ((_menuValueArray_float[0]))));
    (updateFloatToEEPROM(5, 0, 0x0, ((_menuValueArray_float[1]))));
    (updateFloatToEEPROM(9, 0, 0x0, ((_menuValueArray_float[2]))));
}
String _convertNamber(int itemType, int convFormat, int valIndex, int indexMax, int indexMin)
{
    if (itemType== 8) 
    {
        if (convFormat == 4) 
        {
             return String((_menuValueArray_float[valIndex - 1 ]),DEC);
        }
        if (convFormat == 5) 
        {
             return String((_menuValueArray_float[valIndex - 1]),HEX);
        }
        if (convFormat == 6) 
        {
             return String((_menuValueArray_float[valIndex -1]),BIN);
        }
    }
    return "";
}
String _convertFloat(int itemType, int convFormat, int valIndex , int indexMax, int indexMin)
{
    return String((_menuValueArray_float[valIndex -1]),convFormat);
}
void get_Parametr__48176999_5()
{
    	uint16_t vallue; // объявляем промеж переменную
          vallue = 0;
    	int16_t pptt; // объявляем 2 промеж переменную
    	wire_Read_48176999_5(0x01, &vallue); //считываем в промеж переменную регистр шунта
    	pptt = (int16_t)vallue; // получаем напряжение на шунте, в *10мкВ
    	V_Shunt_48176999_5 = pptt * 0.010; // получаем напряжение на шунте, тип Float, в мВ
    	Current_48176999_5 = V_Shunt_48176999_5 * 10 / R_shunt_48176999_5; // получаем амперы
          vallue = 0;
    	wire_Read_48176999_5(0x02, &vallue); //считываем в промеж переменную регистр напряжения
    	int16_t vollt = ((int16_t)((vallue >> 3) * 4)); // сдвигаем на 3 бита и умножаем на 4
    	Voltage_48176999_5 = vollt * 0.001; // получаем флоат, переводим мВ в Вольты
    	if ((V_Shunt_48176999_5 >319) | (V_Shunt_48176999_5 < -319)) MAX_Current_48176999_5 = 1;
    	else MAX_Current_48176999_5=0;
}
void wire_Read_48176999_5(uint8_t reg, uint16_t *value)
{
    	Wire.beginTransmission(64);
    Wire.write(reg);
    	Wire.endTransmission();
    	delay(50);
    	Wire.requestFrom((uint8_t) 64, (uint8_t)2);
    *value = ((Wire.read() << 8) | Wire.read());
}
void get_Parametr__48176999_1()
{
    	uint16_t vallue; // объявляем промеж переменную
          vallue = 0;
    	int16_t pptt; // объявляем 2 промеж переменную
    	wire_Read_48176999_1(0x01, &vallue); //считываем в промеж переменную регистр шунта
    	pptt = (int16_t)vallue; // получаем напряжение на шунте, в *10мкВ
    	V_Shunt_48176999_1 = pptt * 0.010; // получаем напряжение на шунте, тип Float, в мВ
    	Current_48176999_1 = V_Shunt_48176999_1 * 10 / R_shunt_48176999_1; // получаем амперы
          vallue = 0;
    	wire_Read_48176999_1(0x02, &vallue); //считываем в промеж переменную регистр напряжения
    	int16_t vollt = ((int16_t)((vallue >> 3) * 4)); // сдвигаем на 3 бита и умножаем на 4
    	Voltage_48176999_1 = vollt * 0.001; // получаем флоат, переводим мВ в Вольты
    	if ((V_Shunt_48176999_1 >319) | (V_Shunt_48176999_1 < -319)) MAX_Current_48176999_1 = 1;
    	else MAX_Current_48176999_1=0;
}
void wire_Read_48176999_1(uint8_t reg, uint16_t *value)
{
    	Wire.beginTransmission(65);
    Wire.write(reg);
    	Wire.endTransmission();
    	delay(50);
    	Wire.requestFrom((uint8_t) 65, (uint8_t)2);
    *value = ((Wire.read() << 8) | Wire.read());
}
void get_Parametr__48176999_2()
{
    	uint16_t vallue; // объявляем промеж переменную
          vallue = 0;
    	int16_t pptt; // объявляем 2 промеж переменную
    	wire_Read_48176999_2(0x01, &vallue); //считываем в промеж переменную регистр шунта
    	pptt = (int16_t)vallue; // получаем напряжение на шунте, в *10мкВ
    	V_Shunt_48176999_2 = pptt * 0.010; // получаем напряжение на шунте, тип Float, в мВ
    	Current_48176999_2 = V_Shunt_48176999_2 * 10 / R_shunt_48176999_2; // получаем амперы
          vallue = 0;
    	wire_Read_48176999_2(0x02, &vallue); //считываем в промеж переменную регистр напряжения
    	int16_t vollt = ((int16_t)((vallue >> 3) * 4)); // сдвигаем на 3 бита и умножаем на 4
    	Voltage_48176999_2 = vollt * 0.001; // получаем флоат, переводим мВ в Вольты
    	if ((V_Shunt_48176999_2 >319) | (V_Shunt_48176999_2 < -319)) MAX_Current_48176999_2 = 1;
    	else MAX_Current_48176999_2=0;
}
void wire_Read_48176999_2(uint8_t reg, uint16_t *value)
{
    	Wire.beginTransmission(66);
    Wire.write(reg);
    	Wire.endTransmission();
    	delay(50);
    	Wire.requestFrom((uint8_t) 66, (uint8_t)2);
    *value = ((Wire.read() << 8) | Wire.read());
}
void get_Parametr__48176999_3()
{
    	uint16_t vallue; // объявляем промеж переменную
          vallue = 0;
    	int16_t pptt; // объявляем 2 промеж переменную
    	wire_Read_48176999_3(0x01, &vallue); //считываем в промеж переменную регистр шунта
    	pptt = (int16_t)vallue; // получаем напряжение на шунте, в *10мкВ
    	V_Shunt_48176999_3 = pptt * 0.010; // получаем напряжение на шунте, тип Float, в мВ
    	Current_48176999_3 = V_Shunt_48176999_3 * 10 / R_shunt_48176999_3; // получаем амперы
          vallue = 0;
    	wire_Read_48176999_3(0x02, &vallue); //считываем в промеж переменную регистр напряжения
    	int16_t vollt = ((int16_t)((vallue >> 3) * 4)); // сдвигаем на 3 бита и умножаем на 4
    	Voltage_48176999_3 = vollt * 0.001; // получаем флоат, переводим мВ в Вольты
    	if ((V_Shunt_48176999_3 >319) | (V_Shunt_48176999_3 < -319)) MAX_Current_48176999_3 = 1;
    	else MAX_Current_48176999_3=0;
}
void wire_Read_48176999_3(uint8_t reg, uint16_t *value)
{
    	Wire.beginTransmission(67);
    Wire.write(reg);
    	Wire.endTransmission();
    	delay(50);
    	Wire.requestFrom((uint8_t) 67, (uint8_t)2);
    *value = ((Wire.read() << 8) | Wire.read());
}
byte readByteFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
    return EEPROM.read(addres);
}
void updateByteToEEPROM(int addres, byte bitAddres, byte chipAddres, byte value)
{
    return EEPROM.update(addres, value);
}
float readFloatFromEEPROM(int addres, byte bitAddres, byte chipAddres)
{
    byte x[4];
    for(byte i = 0; i < 4; i++) 
    {
         x[i] = readByteFromEEPROM((addres+i),  bitAddres,  chipAddres);
    }
    float *y = (float *)&x;
    return y[0];
}
void updateFloatToEEPROM(int addres, byte bitAddres, byte chipAddres, float value)
{
    byte *x = (byte *)&value;
    for(byte i = 0; i < 4; i++) 
    {
        updateByteToEEPROM((addres+i),  bitAddres,  chipAddres, x[i]);
    }
}
