int button = 12; int red = 10; int yellow = 9; int green = 8; int val; int val2; int State; int Mode = 0; void setup() { Serial.begin(9600); pinMode(button, INPUT); pinMode(red, OUTPUT); pinMode(yellow, OUTPUT); pinMode(green, OUTPUT); State = digitalRead(button); } void loop() { { int State = digitalRead(button); Serial.println(State); } val = digitalRead(button); val2 = digitalRead(button); if (val == val2) { if (val != State) { if (val == LOW) { if (Mode == 0) { Mode = 1; } else { if (Mode == 1) { Mode = 2; } else { if (Mode == 2) { Mode = 3; } else { if (Mode == 3) { Mode = 0; } } } } } } State = val; } if (Mode == 0) { // all-off digitalWrite(red, LOW); digitalWrite(yellow, LOW); digitalWrite(green, LOW); } if (Mode == 1) { //Red is blinks at SOS digitalWrite(red, HIGH); delay(300); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(300); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(300); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(900); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(900); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(900); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(300); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(300); digitalWrite(red, LOW); delay(200); digitalWrite(red, HIGH); delay(300); digitalWrite(red, LOW); delay(200); digitalWrite(green, HIGH); delay(400); digitalWrite(green, HIGH); delay(200); digitalWrite(green, LOW); delay(100); //you can press the button after the green light comes on //then hold for 5 seconds } if (Mode == 2) { //Yellow is on but you need to hold for 800ms to switch to the next. digitalWrite(red, LOW); digitalWrite(yellow, HIGH); delay(300); digitalWrite(yellow, LOW); delay(300); digitalWrite(yellow, HIGH); delay(100); digitalWrite(yellow, LOW); delay(100); digitalWrite(green, LOW); } if (Mode == 3) { //green is on digitalWrite(red, LOW); digitalWrite(yellow, LOW); digitalWrite(green, HIGH); } }