bool StatusOfLED = false;
byte StatusOfButton = 0;
long TimeOfStateNumber=0, CurrentTime = 10;
void setup()
{
pinMode(4, OUTPUT);
pinMode(8, INPUT_PULLUP);
}
void loop()
{
switch (StatusOfButton)
{
case 0:
if (digitalRead(8) == true)
{
StatusOfButton = 1;
TimeOfStateNumber = millis();
}
break;
case 1:
if (digitalRead(8))
StatusOfButton = 0;
else if (millis() - TimeOfStateNumber > CurrentTime)
{
StatusOfLED = !StatusOfLED;
StatusOfButton = 2;
}
break;
case 2:
if (digitalRead(8))
StatusOfButton = 0;
break;
default:
break;
}
digitalWrite(4, StatusOfLED);
}