const int RED = 13;
const int BUTTON = 8;
int OFF = 0;
int ON = 1;
int BLINK = 2;
int RELEASED = 1;
int PRESSED = 0;
int led_state = OFF;
int button_state = RELEASED;
int blink_state = OFF;
unsigned long start;
unsigned long delta;
void setup() {
pinMode(RED,OUTPUT);
pinMode(BUTTON, INPUT);
start = millis();
}
void loop() {
int value = digitalRead(BUTTON);
if (value == PRESSED){
// button was released but now it is pressed ...
if(button_state == RELEASED){
button_state = PRESSED;
}
// else already pressed and no change
} else if (value == RELEASED) {
if (button_state == PRESSED){
button_state = RELEASED;
led_state = (led_state+1) %3;
start = millis();
}
}
if (led_state == OFF){
digitalWrite(RED,LOW);
} else if (led_state == ON){
digitalWrite(RED, HIGH);
} else if (led_state == BLINK){
delta = millis() - start;
if(delta >= 500){
start = millis();
blink_state = !blink_state;
digitalWrite(RED, blink_state);
}
}
}