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;
bool _tim4I = 0;
bool _tim4O = 0;
unsigned long _tim4P = 0UL;
bool _tim5I = 0;
bool _tim5O = 0;
unsigned long _tim5P = 0UL;
bool _bounseInputD10S = 0;
bool _bounseInputD10O = 0;
unsigned long _bounseInputD10P = 0UL;
void setup()
{
pinMode(10, INPUT_PULLUP);
pinMode(2, OUTPUT);
digitalWrite(2, 0);
pinMode(4, OUTPUT);
digitalWrite(4, 0);
pinMode(6, OUTPUT);
digitalWrite(6, 0);
pinMode(8, OUTPUT);
digitalWrite(8, 0);
_bounseInputD10O = digitalRead(10);
}
void loop()
{
bool _bounceInputTmpD10 = (digitalRead (10));
if (_bounseInputD10S)
{
if (millis() >= (_bounseInputD10P + 40))
{
_bounseInputD10O= _bounceInputTmpD10;
_bounseInputD10S=0;
}
}
else
{
if (_bounceInputTmpD10 != _bounseInputD10O)
{
_bounseInputD10S=1;
_bounseInputD10P = millis();
}
}
//Плата:1
if(!(_bounseInputD10O))
{
_tim2O = 1;
_tim2I = 1;
}
else
{
if(_tim2I)
{
_tim2I = 0;
_tim2P = millis();
}
else
{
if (_tim2O)
{
if (_isTimer(_tim2P, 120000)) _tim2O = 0;
}
}
}
digitalWrite(2, _tim2O);
if (!(_bounseInputD10O))
{
if (_tim3I)
{
if (_isTimer(_tim3P, 7000))
{
_tim3O = 1;
}
}
else
{
_tim3I =1;
_tim3P = millis();
}
}
else
{
_tim3O = 0;
_tim3I = 0;
}
digitalWrite(4, _tim3O);
if(!(_bounseInputD10O))
{
_tim1O = 1;
_tim1I = 1;
}
else
{
if(_tim1I)
{
_tim1I = 0;
_tim1P = millis();
}
else
{
if (_tim1O)
{
if (_isTimer(_tim1P, 1000)) _tim1O = 0;
}
}
}
if (_tim1O)
{
if (_tim5I)
{
if (_isTimer(_tim5P, 6000))
{
_tim5O = 1;
}
}
else
{
_tim5I =1;
_tim5P = millis();
}
}
else
{
_tim5O = 0;
_tim5I = 0;
}
digitalWrite(6, !(_tim5O));
if (!(_bounseInputD10O))
{
if (_tim4I)
{
if (_isTimer(_tim4P, 15000))
{
_tim4O = 1;
}
}
else
{
_tim4I =1;
_tim4P = millis();
}
}
else
{
_tim4O = 0;
_tim4I = 0;
}
digitalWrite(8, _tim4O);
}
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));
}
}