byte button = 2;
int led = 3;
int x;
unsigned long currentTime = 0;
unsigned long lastTime = 0;
unsigned long getLastTime() {
return currentTime = millis() / 1000.0 - lastTime;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(button, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
//IF BUTTON IS PRESSED X ADDS 1 VALUE
x+=digitalRead(button);
Serial.println(x);
switch (x) {
case 0:
digitalWrite(led, LOW);
break;
case 1:
digitalWrite(led, HIGH);
break;
case 2:
if (getLastTime() >= 0 && getLastTime() <=0.5)
{
digitalWrite(led, HIGH);
}
else if (getLastTime() >= 0.5 && getLastTime()<=1 )
{
digitalWrite(led, LOW);
}
else if (getLastTime() > 0.5)
{
repeat();
}
break;
case 3:
if (getLastTime() >= 0 && getLastTime() <=1)
{
digitalWrite(led, HIGH);
}
else if (getLastTime() >= 1 && getLastTime()<=2 )
{
digitalWrite(led, LOW);
}
else if (getLastTime() > 3)
{
repeat();
}
break;
default:
x = 0;
break;
}
}
void repeat() {
lastTime = millis() / 1000.0;
}