#include "flprogUtilites.h"
bool _gen2I = 0;
bool _gen2O = 0;
unsigned long _gen2P = 0UL;
bool _tim1I = 0;
bool _tim1O = 0;
unsigned long _tim1P = 0UL;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
bool _count1I = 0;
int _count1_Value = 0;
bool _bounseInputD14S = 0;
bool _bounseInputD14O = 0;
unsigned long _bounseInputD14P = 0UL;
int _sido1TB = 0;
String _sido1TSN;
bool _sido1a1 = 0;
bool _sido1b1 = 0;
bool _sido1c1 = 0;
bool _sido1d1 = 0;
bool _sido1e1 = 0;
bool _sido1f1 = 0;
bool _sido1g1 = 0;
bool _sido1a2 = 0;
bool _sido1b2 = 0;
bool _sido1c2 = 0;
bool _sido1d2 = 0;
bool _sido1e2 = 0;
bool _sido1f2 = 0;
bool _sido1g2 = 0;
void setup()
{
    pinMode(14, INPUT);
    pinMode(13, OUTPUT);
    digitalWrite(13, 1);
    pinMode(12, OUTPUT);
    digitalWrite(12, 1);
    pinMode(11, OUTPUT);
    digitalWrite(11, 1);
    pinMode(10, OUTPUT);
    digitalWrite(10, 1);
    pinMode(9, OUTPUT);
    digitalWrite(9, 1);
    pinMode(8, OUTPUT);
    digitalWrite(8, 1);
    pinMode(7, OUTPUT);
    digitalWrite(7, 1);
    pinMode(6, OUTPUT);
    digitalWrite(6, 1);
    pinMode(5, OUTPUT);
    digitalWrite(5, 0);
    pinMode(4, OUTPUT);
    digitalWrite(4, 1);
    pinMode(3, OUTPUT);
    digitalWrite(3, 1);
    pinMode(2, OUTPUT);
    digitalWrite(2, 1);
    pinMode(1, OUTPUT);
    digitalWrite(1, 1);
    pinMode(0, OUTPUT);
    digitalWrite(0, 0);
    _bounseInputD14O =    digitalRead(14);
}
void loop()
{
    bool  _bounceInputTmpD14 =  (digitalRead (14));
    if (_bounseInputD14S)
    {
        if (millis() >= (_bounseInputD14P + 40))
        {
            _bounseInputD14O= _bounceInputTmpD14;
            _bounseInputD14S=0;
        }
    }
    else
    {
        if (_bounceInputTmpD14 != _bounseInputD14O)
        {
            _bounseInputD14S=1;
            _bounseInputD14P = millis();
        }
    }
    //Плата:1
    if(_bounseInputD14O) 
    {
        _tim1O = 1;
        _tim1I = 1;
    }
     else 
    {
         if(_tim1I) 
        {
            _tim1I = 0;
            _tim1P = millis();
        }
         else 
        {
             if (_tim1O) 
            {
                if (flprog::isTimer(_tim1P, 1000)) _tim1O = 0;
            }
        }
    }
    if (_tim1O) 
    {
        if (! _gen2I)
        {
            _gen2I = 1;
            _gen2O = 1;
            _gen2P = millis();
        }
    }
     else 
    {
        _gen2I = 0 ;
        _gen2O= 0;
    }
     if (_gen2I &&  _gen2O)   _gen2O = !(flprog::isTimer(_gen2P , 10));
    if (_bounseInputD14O) 
    {
         if (! _gen1I) 
        {
            _gen1I = 1;
            _gen1O = 1;
            _gen1P = millis();
        }
    }
     else 
    {
        _gen1I = 0 ;
        _gen1O= 0;
    }
    if (_gen1I) 
    {
          if (flprog::isTimer (_gen1P , 10)) 
        {
             _gen1P = millis();
            _gen1O = ! _gen1O;
        }
    }
    if (_gen2O)
    {
        _count1_Value = 0;
    }
     else 
    {
        if (_gen1O)
        {
            if (! _count1I) 
            {
                _count1I = 1;
                _count1_Value = _count1_Value + 1;
            }
        }
         else 
        {
            _count1I = 0;
        }
    }
    _sido1TSN = String (_count1_Value);
    _sido1TB = _IntToSevenSegment(_charFromStringForIndex(_sido1TSN,1));
    _sido1a2 = ! bitRead(_sido1TB, 0);
    _sido1b2 = ! bitRead(_sido1TB, 1);
    _sido1c2 = ! bitRead(_sido1TB, 2);
    _sido1d2 = ! bitRead(_sido1TB, 3);
    _sido1e2 = ! bitRead(_sido1TB, 4);
    _sido1f2 = ! bitRead(_sido1TB, 5);
    _sido1g2 = ! bitRead(_sido1TB, 6);
    _sido1TB = _IntToSevenSegment(_charFromStringForIndex(_sido1TSN,2));
    _sido1a1 = ! bitRead(_sido1TB, 0);
    _sido1b1 = ! bitRead(_sido1TB, 1);
    _sido1c1 = ! bitRead(_sido1TB, 2);
    _sido1d1 = ! bitRead(_sido1TB, 3);
    _sido1e1 = ! bitRead(_sido1TB, 4);
    _sido1f1 = ! bitRead(_sido1TB, 5);
    _sido1g1 = ! bitRead(_sido1TB, 6);
    digitalWrite(0, _sido1g2);
    digitalWrite(1, _sido1f2);
    digitalWrite(2, _sido1e2);
    digitalWrite(3, _sido1d2);
    digitalWrite(4, _sido1c2);
    digitalWrite(5, _sido1b2);
    digitalWrite(6, _sido1a2);
    digitalWrite(7, _sido1g1);
    digitalWrite(8, _sido1f1);
    digitalWrite(9, _sido1e1);
    digitalWrite(10, _sido1d1);
    digitalWrite(11, _sido1c1);
    digitalWrite(12, _sido1b1);
    digitalWrite(13, _sido1a1);
}
byte  _IntToSevenSegment(int value)
{
    if (value==48) 
    {
        return 63;
    }
    if (value==49) 
    {
        return 6;
    }
    if (value==50) 
    {
        return 91;
    }
    if (value==51) 
    {
        return 79;
    }
    if (value==52) 
    {
        return 102;
    }
    if (value==53) 
    {
        return 109;
    }
    if (value==54) 
    {
        return 125;
    }
    if (value==55) 
    {
        return 7;
    }
    if (value==56) 
    {
        return 127;
    }
    if (value==57) 
    {
        return 111;
    }
    if (value==45) 
    {
        return 64;
    }
    if (value==65) 
    {
        return 119;
    }
    if (value==67) 
    {
        return 57;
    }
    if (value==99) 
    {
        return 88;
    }
    if (value==100) 
    {
        return 94;
    }
    if (value==69) 
    {
        return 121;
    }
    if (value==70) 
    {
        return 113;
    }
    if (value==72) 
    {
        return 118;
    }
    if (value==104) 
    {
        return 116;
    }
    if (value==76) 
    {
        return 56;
    }
    if (value==79) 
    {
        return 63;
    }
    if (value==111) 
    {
        return 92;
    }
    if (value==80) 
    {
        return 115;
    }
    if (value==114) 
    {
        return 80;
    }
    if (value==83) 
    {
        return 109;
    }
    if (value==116) 
    {
        return 120;
    }
    if (value==85) 
    {
        return 62;
    }
    if (value==117) 
    {
        return 28;
    }
    if (value==110) 
    {
        return 84;
    }
    return 0;
}
int _charFromStringForIndex(String val, int idx)
{
    int lengt=val.length();
    if(lengt < idx) return 0;
    return val.charAt(lengt-idx);
}