#include "flprogUtilites.h"
#include <Adafruit_PCD8544.h>
#include <Adafruit_GFX.h>
#include "EmonLib.h"
float wire_mA_197767732_1;
float wire_A_197767732_1;
int sensorTA12_197767732_1= 0;
float nVPP_197767732_1;
float nCurrThruResistorPP_197767732_1;
float nCurrThruResistorRMS_197767732_1;
float nCurrentThruWire_197767732_1;
float result_197767732_1;
int readValue_197767732_1;
int maxValue_197767732_1;
unsigned long start_time_197767732_1;
float wire_mA_197767732_3;
float wire_A_197767732_3;
int sensorTA12_197767732_3= 1;
float nVPP_197767732_3;
float nCurrThruResistorPP_197767732_3;
float nCurrThruResistorRMS_197767732_3;
float nCurrentThruWire_197767732_3;
float result_197767732_3;
int readValue_197767732_3;
int maxValue_197767732_3;
unsigned long start_time_197767732_3;
float Vrms_87162136_1;
EnergyMonitor emon1_87162136_1; // Create an instance
int i_87162136_1= 0;
float tenvals_87162136_1= 0.0;
float minval_87162136_1= 1000;
float maxval_87162136_1= 0.0;
bool EN_204780896_1;
String in1_204780896_1;
String in2_204780896_1;
String in3_204780896_1;
String in4_204780896_1;
String in5_204780896_1;
byte size1_204780896_1;
byte size2_204780896_1;
byte size3_204780896_1;
byte size4_204780896_1;
byte size5_204780896_1;
bool invert_204780896_1;
byte contrast;
#define My_Color BLACK
// pin 3 - Serial clock out (SCLK)
// pin 4 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 6 - LCD chip select (CS)
// pin 7 - LCD reset (RST)
Adafruit_PCD8544 display= Adafruit_PCD8544(9, 8, 7, 6, 5);
float wire_mA_197767732_2;
float wire_A_197767732_2;
int sensorTA12_197767732_2= 3;
float nVPP_197767732_2;
float nCurrThruResistorPP_197767732_2;
float nCurrThruResistorRMS_197767732_2;
float nCurrentThruWire_197767732_2;
float result_197767732_2;
int readValue_197767732_2;
int maxValue_197767732_2;
unsigned long start_time_197767732_2;
float wire_mA_197767732_4;
float wire_A_197767732_4;
int sensorTA12_197767732_4= 4;
float nVPP_197767732_4;
float nCurrThruResistorPP_197767732_4;
float nCurrThruResistorRMS_197767732_4;
float nCurrentThruWire_197767732_4;
float result_197767732_4;
int readValue_197767732_4;
int maxValue_197767732_4;
unsigned long start_time_197767732_4;
float wire_mA_197767732_5;
float wire_A_197767732_5;
int sensorTA12_197767732_5= 7;
float nVPP_197767732_5;
float nCurrThruResistorPP_197767732_5;
float nCurrThruResistorRMS_197767732_5;
float nCurrentThruWire_197767732_5;
float result_197767732_5;
int readValue_197767732_5;
int maxValue_197767732_5;
unsigned long start_time_197767732_5;
bool _trgr1 = 0;
bool _tim3I = 0;
bool _tim3O = 0;
unsigned long _tim3P = 0UL;
bool _trgr2 = 0;
bool _tim4I = 0;
bool _tim4O = 0;
unsigned long _tim4P = 0UL;
bool _swi1;
bool _swi3;
bool _tim2I = 0;
bool _tim2O = 0;
unsigned long _tim2P = 0UL;
bool _swi5;
bool _swi2;
bool _trgrt4 = 0;
bool _trgrt4I = 0;
bool _trgrt3 = 0;
bool _trgrt3I = 0;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _trgrt2 = 0;
bool _trgrt2I = 0;
bool _trgr4 = 0;
bool _trgr3 = 0;
void setup()
{
    pinMode(13, OUTPUT);
    digitalWrite(13, 0);
    pinMode(12, OUTPUT);
    digitalWrite(12, 0);
    pinMode(11, OUTPUT);
    digitalWrite(11, 0);
    pinMode(10, OUTPUT);
    digitalWrite(10, 0);
    pinMode(4, OUTPUT);
    digitalWrite(4, 0);
    pinMode(sensorTA12_197767732_1, INPUT);
    pinMode(sensorTA12_197767732_3, INPUT);
    emon1_87162136_1.voltage(2, 660, 1.7); // Voltage: input pin, calibration, phase_shift
    display.begin(); // Инициализация дисплея
      display.setContrast(65); // Устанавливаем контраст
     display.clearDisplay(); // Очищаем дисплей
    display.display(); // Переносим данные из буфера в ОЗУ
    pinMode(sensorTA12_197767732_2, INPUT);
    pinMode(sensorTA12_197767732_4, INPUT);
    pinMode(sensorTA12_197767732_5, INPUT);
}
void loop()
{
    //Плата:1
    contrast = 50;
    display.setContrast(contrast); // Устанавливаем контраст
    display.clearDisplay(); // Очищаем дисплей
    maxValue_197767732_1= 0;
    start_time_197767732_1 = millis();
    while((millis()-start_time_197767732_1) < 1000)
    {
        readValue_197767732_1 = analogRead(sensorTA12_197767732_1);
        if (readValue_197767732_1 > maxValue_197767732_1)
        {
            maxValue_197767732_1 = readValue_197767732_1;
        }
    }
    result_197767732_1 = (maxValue_197767732_1 * 5.0)/1024.0;
    nCurrThruResistorPP_197767732_1 = (result_197767732_1 / 200.0) * 1000.0;
    nCurrThruResistorRMS_197767732_1 = nCurrThruResistorPP_197767732_1 * 0.707;
    nCurrentThruWire_197767732_1 = nCurrThruResistorRMS_197767732_1 * 1000;
    wire_mA_197767732_1=nCurrentThruWire_197767732_1;
    wire_A_197767732_1=nCurrentThruWire_197767732_1 / 1000;
    emon1_87162136_1.calcVI(20,2000); // Calculate all. No.of half wavelengths (crossings), time-out
    float Vrms_87162136_1 = (emon1_87162136_1.Vrms);
    if (Vrms_87162136_1 < 10) 
    {
         Vrms_87162136_1 = 0.0;
    }
    maxValue_197767732_3= 0;
    start_time_197767732_3 = millis();
    while((millis()-start_time_197767732_3) < 1000)
    {
        readValue_197767732_3 = analogRead(sensorTA12_197767732_3);
        if (readValue_197767732_3 > maxValue_197767732_3)
        {
            maxValue_197767732_3 = readValue_197767732_3;
        }
    }
    result_197767732_3 = (maxValue_197767732_3 * 5.0)/1024.0;
    nCurrThruResistorPP_197767732_3 = (result_197767732_3 / 200.0) * 1000.0;
    nCurrThruResistorRMS_197767732_3 = nCurrThruResistorPP_197767732_3 * 0.707;
    nCurrentThruWire_197767732_3 = nCurrThruResistorRMS_197767732_3 * 1000;
    wire_mA_197767732_3=nCurrentThruWire_197767732_3;
    wire_A_197767732_3=nCurrentThruWire_197767732_3 / 1000;
    if (!(0)) 
    {
         if (_trgrt1I) 
        {
             _trgrt1 = 0;
        }
         else 
        {
            _trgrt1 = 1;
            _trgrt1I = 1;
        }
    }
     else 
    {
        _trgrt1 = 0;
        _trgrt1I = 0;
    }
    ;
    if(_trgrt1) _trgr1 = 0;
    if((wire_mA_197767732_3) >= (3000.00)) _trgr1 = 1;
    if ((wire_mA_197767732_1) >= (((analogRead (6)))/(1.023)))
    {
         if (_tim1I) 
        {
             if (flprog::isTimer(_tim1P, 3000)) 
            {
                _tim1O = 1;
            }
        }
         else 
        {
            _tim1I =1;
            _tim1P = millis();
        }
    }
     else 
    {
        _tim1O = 0;
        _tim1I = 0;
    }
    if(_trgr1)
    {
        _swi1=0;
    }
    else
    {
        _swi1=_tim1O;
    }
    digitalWrite(12, _swi1);
    maxValue_197767732_2= 0;
    start_time_197767732_2 = millis();
    while((millis()-start_time_197767732_2) < 1000)
    {
        readValue_197767732_2 = analogRead(sensorTA12_197767732_2);
        if (readValue_197767732_2 > maxValue_197767732_2)
        {
            maxValue_197767732_2 = readValue_197767732_2;
        }
    }
    result_197767732_2 = (maxValue_197767732_2 * 5.0)/1024.0;
    nCurrThruResistorPP_197767732_2 = (result_197767732_2 / 200.0) * 1000.0;
    nCurrThruResistorRMS_197767732_2 = nCurrThruResistorPP_197767732_2 * 0.707;
    nCurrentThruWire_197767732_2 = nCurrThruResistorRMS_197767732_2 * 1000;
    wire_mA_197767732_2=nCurrentThruWire_197767732_2;
    wire_A_197767732_2=nCurrentThruWire_197767732_2 / 1000;
    if (!(0)) 
    {
         if (_trgrt2I) 
        {
             _trgrt2 = 0;
        }
         else 
        {
            _trgrt2 = 1;
            _trgrt2I = 1;
        }
    }
     else 
    {
        _trgrt2 = 0;
        _trgrt2I = 0;
    }
    ;
    if(_trgrt2) _trgr2 = 0;
    if((wire_mA_197767732_2) >= (3000.00)) _trgr2 = 1;
    if ((wire_mA_197767732_1) >= (((analogRead (6)))/(1.023)))
    {
         if (_tim2I) 
        {
             if (flprog::isTimer(_tim2P, 6000)) 
            {
                _tim2O = 1;
            }
        }
         else 
        {
            _tim2I =1;
            _tim2P = millis();
        }
    }
     else 
    {
        _tim2O = 0;
        _tim2I = 0;
    }
    if(_trgr2)
    {
        _swi2=0;
    }
    else
    {
        _swi2=_tim2O;
    }
    digitalWrite(11, _swi2);
    maxValue_197767732_4= 0;
    start_time_197767732_4 = millis();
    while((millis()-start_time_197767732_4) < 1000)
    {
        readValue_197767732_4 = analogRead(sensorTA12_197767732_4);
        if (readValue_197767732_4 > maxValue_197767732_4)
        {
            maxValue_197767732_4 = readValue_197767732_4;
        }
    }
    result_197767732_4 = (maxValue_197767732_4 * 5.0)/1024.0;
    nCurrThruResistorPP_197767732_4 = (result_197767732_4 / 200.0) * 1000.0;
    nCurrThruResistorRMS_197767732_4 = nCurrThruResistorPP_197767732_4 * 0.707;
    nCurrentThruWire_197767732_4 = nCurrThruResistorRMS_197767732_4 * 1000;
    wire_mA_197767732_4=nCurrentThruWire_197767732_4;
    wire_A_197767732_4=nCurrentThruWire_197767732_4 / 1000;
    if (!(0)) 
    {
         if (_trgrt3I) 
        {
             _trgrt3 = 0;
        }
         else 
        {
            _trgrt3 = 1;
            _trgrt3I = 1;
        }
    }
     else 
    {
        _trgrt3 = 0;
        _trgrt3I = 0;
    }
    ;
    if(_trgrt3) _trgr3 = 0;
    if((wire_mA_197767732_4) >= (3000.00)) _trgr3 = 1;
    if ((wire_mA_197767732_1) >= (((analogRead (6)))/(1.023)))
    {
         if (_tim3I) 
        {
             if (flprog::isTimer(_tim3P, 9000)) 
            {
                _tim3O = 1;
            }
        }
         else 
        {
            _tim3I =1;
            _tim3P = millis();
        }
    }
     else 
    {
        _tim3O = 0;
        _tim3I = 0;
    }
    if(_trgr3)
    {
        _swi3=0;
    }
    else
    {
        _swi3=_tim3O;
    }
    digitalWrite(10, _swi3);
    maxValue_197767732_5= 0;
    start_time_197767732_5 = millis();
    while((millis()-start_time_197767732_5) < 1000)
    {
        readValue_197767732_5 = analogRead(sensorTA12_197767732_5);
        if (readValue_197767732_5 > maxValue_197767732_5)
        {
            maxValue_197767732_5 = readValue_197767732_5;
        }
    }
    result_197767732_5 = (maxValue_197767732_5 * 5.0)/1024.0;
    nCurrThruResistorPP_197767732_5 = (result_197767732_5 / 200.0) * 1000.0;
    nCurrThruResistorRMS_197767732_5 = nCurrThruResistorPP_197767732_5 * 0.707;
    nCurrentThruWire_197767732_5 = nCurrThruResistorRMS_197767732_5 * 1000;
    wire_mA_197767732_5=nCurrentThruWire_197767732_5;
    wire_A_197767732_5=nCurrentThruWire_197767732_5 / 1000;
    if (!(0)) 
    {
         if (_trgrt4I) 
        {
             _trgrt4 = 0;
        }
         else 
        {
            _trgrt4 = 1;
            _trgrt4I = 1;
        }
    }
     else 
    {
        _trgrt4 = 0;
        _trgrt4I = 0;
    }
    ;
    if(_trgrt4) _trgr4 = 0;
    if((wire_mA_197767732_5) >= (3000.00)) _trgr4 = 1;
    if ((wire_mA_197767732_1) >= (((analogRead (6)))/(1.023)))
    {
         if (_tim4I) 
        {
             if (flprog::isTimer(_tim4P, 12000)) 
            {
                _tim4O = 1;
            }
        }
         else 
        {
            _tim4I =1;
            _tim4P = millis();
        }
    }
     else 
    {
        _tim4O = 0;
        _tim4I = 0;
    }
    if(_trgr4)
    {
        _swi5=0;
    }
    else
    {
        _swi5=_tim4O;
    }
    digitalWrite(4, _swi5);
    EN_204780896_1 = !(0);
    in1_204780896_1 = ((String("MAST ")) + ((_floatToStringWitRaz(wire_A_197767732_1,1))) + (String("A ")) + ((_floatToStringWitRaz(Vrms_87162136_1,0))) + (String("V")));
    in2_204780896_1 = ((String("SLAVE1 ")) + ((_floatToStringWitRaz(wire_A_197767732_3,1))) + (String("A")));
    in3_204780896_1 = ((String("SLAVE2 ")) + ((_floatToStringWitRaz(wire_A_197767732_2,1))) + (String("A")));
    in4_204780896_1 = ((String("SLAVE3 ")) + ((_floatToStringWitRaz(wire_A_197767732_4,1))) + (String("A")));
    in5_204780896_1 = ((String("SLAVE4 ")) + ((_floatToStringWitRaz(wire_A_197767732_5,1))) + (String("A")));
    size1_204780896_1 = 1;
    size2_204780896_1 = 1;
    size3_204780896_1 = 1;
    size4_204780896_1 = 1;
    size5_204780896_1 = 1;
    invert_204780896_1 = 0;
    if (EN_204780896_1==1)
    {
        if (invert_204780896_1==1)
        	
        {
            display.setTextColor(WHITE, BLACK);
        }
        	else
        	 
        {
            display.setTextColor(BLACK, WHITE);
        }
        display.setCursor(0,1);
        display.setTextSize(size1_204780896_1); // Устанавливаем размер текста  
        display.print(in1_204780896_1);
        display.setCursor(0,10);
        display.setTextSize(size2_204780896_1); // Устанавливаем размер текста
        display.print(in2_204780896_1);
        display.setCursor(0,19);
        display.setTextSize(size3_204780896_1); // Устанавливаем размер текста
        display.print(in3_204780896_1);
        display.setCursor(0,28);
        display.setTextSize(size4_204780896_1); // Устанавливаем размер текста
        display.print(in4_204780896_1);
        display.setCursor(0,37);
        display.setTextSize(size5_204780896_1); // Устанавливаем размер текста
        display.print(in5_204780896_1);
    }
    else
    {
        display.clearDisplay();
        display.display();
    }
    digitalWrite(13, !((wire_mA_197767732_1) >= (((analogRead (6)))/(1.023))));
    display.display();
}
String  _floatToStringWitRaz(float value, int raz)
{
    return String(value,raz);
}
