bool StatusOfLED = true;
byte StatusOfButton = 0;
long TimeOfStateNumber0, CurrentTime = 100;
void setup()
{
pinMode(4, OUTPUT);
pinMode(8, INPUT_PULLUP);
}
void loop()
{
// In This Case The StatusOfButton Of The Button Will Be Chaging Several Times Before
// You Release Your Finger From The Button And This Is Wrong So The Solution Is
// To Changing The StatusOfButton Only If I Release My Finger From The Button
// if (digitalRead(8) == false)
// StatusOfLED = !StatusOfLED;
switch (StatusOfButton)
{
case 0:
if (digitalRead(8) == false)
{
StatusOfButton = 1;
TimeOfStateNumber0 = millis();
}
break;
case 1:
if (digitalRead(8))
StatusOfButton = 0;
else if (millis() - TimeOfStateNumber0 > CurrentTime)
{
StatusOfLED = !StatusOfLED;
StatusOfButton = 2;
}
break;
case 2:
if (digitalRead(8))
StatusOfButton = 0;
break;
default:
break;
}
digitalWrite(4, StatusOfLED);
}