#define relay1a 3 #define relay1b 2 #define button 4 #define SIG_R_1 5 #define SIG_G_1 6 #define SIG_R_2 7 #define SIG_G_2 8 #define SIG_MG_1 9 #define SIG_MY_1 10 int buttonState; int lastButtonState = LOW; int flag = 0; unsigned long lastDebounceTime = 0; //last time the pin was toggled, used to keep track of time unsigned long debounceDelay = 100; //the debounce time which user sets prior to run void setup() { Serial.begin(9600); pinMode(relay1a, OUTPUT); pinMode(relay1b, OUTPUT); pinMode(SIG_R_1, OUTPUT); pinMode(SIG_G_1, OUTPUT); pinMode(SIG_R_2, OUTPUT); pinMode(SIG_G_2, OUTPUT); pinMode(SIG_MG_1, OUTPUT); pinMode(SIG_MY_1, OUTPUT); pinMode(button, INPUT); // SET RELAYS digitalWrite(relay1a, LOW); digitalWrite(relay1b, HIGH); digitalWrite(SIG_R_1, LOW); digitalWrite(SIG_G_1, HIGH); digitalWrite(SIG_R_2, HIGH); digitalWrite(SIG_G_2, LOW); digitalWrite(SIG_MG_1, HIGH); digitalWrite(SIG_MY_1, LOW); delay(500); digitalWrite(relay1a, HIGH); digitalWrite(relay1b, LOW); digitalWrite(SIG_R_1, HIGH); digitalWrite(SIG_G_1, LOW); digitalWrite(SIG_R_2, LOW); digitalWrite(SIG_G_2, HIGH); digitalWrite(SIG_MG_1, LOW); digitalWrite(SIG_MY_1, HIGH); delay(500); digitalWrite(relay1a, LOW); digitalWrite(relay1b, HIGH); digitalWrite(SIG_R_1, LOW); digitalWrite(SIG_G_1, HIGH); digitalWrite(SIG_R_2, HIGH); digitalWrite(SIG_G_2, LOW); digitalWrite(SIG_MG_1, HIGH); digitalWrite(SIG_MY_1, LOW); delay(500); digitalWrite(relay1a, HIGH); digitalWrite(relay1b, LOW); digitalWrite(SIG_R_1, HIGH); digitalWrite(SIG_G_1, LOW); digitalWrite(SIG_R_2, LOW); digitalWrite(SIG_G_2, HIGH); digitalWrite(SIG_MG_1, LOW); digitalWrite(SIG_MY_1, HIGH); delay(500); digitalWrite(relay1a, HIGH); digitalWrite(relay1b, HIGH); digitalWrite(SIG_R_1, LOW); // RED MAIN OFF digitalWrite(SIG_G_1, HIGH); // GREEN MAIN ON digitalWrite(SIG_R_2, HIGH); // RED SIDING ON digitalWrite(SIG_G_2, LOW); // GREEN SIDING OFF digitalWrite(SIG_MG_1, HIGH); // GREEN MAIN ON digitalWrite(SIG_MY_1, LOW); // YELLOW MAIN OFF } // END SETUP void loop() { int reading = digitalRead(button); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis()-lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; if (buttonState == HIGH) { if (flag == 0) { digitalWrite(SIG_R_1, HIGH); digitalWrite(SIG_G_1, LOW); digitalWrite(SIG_R_2, LOW); digitalWrite(SIG_G_2, HIGH); digitalWrite(SIG_MG_1, LOW); digitalWrite(SIG_MY_1, HIGH); digitalWrite(relay1a, LOW); // ON delay(50); digitalWrite(relay1a, HIGH); // OFF flag = 1; Serial.println("BONE\r"); //ledState = !ledState; } // IF FLAG 0 else if (flag == 1){ digitalWrite(SIG_R_1, LOW); digitalWrite(SIG_G_1, HIGH); digitalWrite(SIG_R_2, HIGH); digitalWrite(SIG_G_2, LOW); digitalWrite(SIG_MG_1, HIGH); digitalWrite(SIG_MY_1, LOW); digitalWrite(relay1b, LOW); // ON delay(50); digitalWrite(relay1b, HIGH); // OFF flag = 0; Serial.println("BTWO"); } // IF FLAG TWO } // IF BUTTON STATE } // IF READING } // IF MILLIS lastButtonState = reading; // TEST SERIAL if(Serial.available() > 0) { int in = Serial.read(); // PERL TEST switch(in) { case '1': digitalWrite(SIG_R_1, HIGH); digitalWrite(SIG_G_1, LOW); digitalWrite(SIG_R_2, LOW); digitalWrite(SIG_G_2, HIGH); digitalWrite(SIG_MG_1, LOW); digitalWrite(SIG_MY_1, HIGH); digitalWrite(relay1a, LOW); // ON delay(50); digitalWrite(relay1a, HIGH); // OFF break; case '2': digitalWrite(SIG_R_1, LOW); digitalWrite(SIG_G_1, HIGH); digitalWrite(SIG_R_2, HIGH); digitalWrite(SIG_G_2, LOW); digitalWrite(SIG_MG_1, HIGH); digitalWrite(SIG_MY_1, LOW); digitalWrite(relay1b, LOW); // ON delay(50); digitalWrite(relay1b, HIGH); // OFF break; } // END SWITCH } // END SERIAL // END TEST SERIAL } // END LOOP