const int RedButtonPin = 2; const int GreenButtonPin = 3; const int RedLEDPin = 13; const int LeftGreenLEDPin = 11; const int RightGreenLEDPin = 12; int RedLEDState = HIGH; int RedButtonState; int LastRedButtonState = LOW; int LeftGreenLEDState = LOW; int RightGreenLEDState = LOW; int GreenLEDState = 0; int SetGreenTimer = 0; int GreenLEDTimer = 0; unsigned long LastRedDebounceTime = 0; unsigned long DebounceDelay = 50; void setup() { pinMode(RedButtonPin, INPUT); pinMode(RedLEDPin, OUTPUT); pinMode(GreenButtonPin, INPUT); pinMode(LeftGreenLEDPin, OUTPUT); pinMode(RightGreenLEDPin, OUTPUT); // set initial LED state digitalWrite(RedLEDPin, RedLEDState); digitalWrite(LeftGreenLEDPin, LOW); digitalWrite(RightGreenLEDPin, LOW); } void loop() { int ReadRed = digitalRead(RedButtonPin); int ReadGreen = digitalRead(GreenButtonPin); if (ReadRed != LastRedButtonState) { LastRedDebounceTime = millis(); } if ((millis() - LastRedDebounceTime) > DebounceDelay) { if (ReadRed != RedButtonState) { RedButtonState = ReadRed; if (RedButtonState == HIGH) { RedLEDState = !RedLEDState; } } } digitalWrite(RedLEDPin, RedLEDState); LastRedButtonState = ReadRed; if (ReadGreen == HIGH){ if (SetGreenTimer == 1){ SetGreenTimer = 0; GreenLEDTimer = millis(); } if (millis() - GreenLEDTimer <= 75) { digitalWrite(LeftGreenLEDPin, LOW); digitalWrite(RightGreenLEDPin, LOW); } if (millis() - GreenLEDTimer >= 76 && millis() - GreenLEDTimer <= 300) { digitalWrite(LeftGreenLEDPin, HIGH); digitalWrite(RightGreenLEDPin, LOW); } if (millis() - GreenLEDTimer >= 301 && millis() - GreenLEDTimer <= 375) { digitalWrite(LeftGreenLEDPin, LOW); digitalWrite(RightGreenLEDPin, LOW); } if (millis() - GreenLEDTimer >= 376 && millis() - GreenLEDTimer <= 600) { digitalWrite(LeftGreenLEDPin, LOW); digitalWrite(RightGreenLEDPin, HIGH); } if (millis() - GreenLEDTimer >= 601) { GreenLEDTimer = millis(); } } if (ReadGreen == LOW) { SetGreenTimer = 1; digitalWrite(LeftGreenLEDPin, LOW); digitalWrite(RightGreenLEDPin, LOW); } }