//SN110 Simple Railroad signal automation /* Modified from Blink and DigitalPullup Example code by Paul Bradt Turns on a system of five light bulbs or LEDs using a switch and then sequences to the next bulb ultimately cycling back to first bulb. This can simulate a model railroad signal sequence. */ // The setup function runs once when you press reset or power the board void setup() { /* initialize digital pins 4, 5, 10, 11, and 12 as outputs. 2 as input pullup pin. Input as Pullup does not require external resistor but reverses the logic. */ pinMode(4, OUTPUT); //Green Sig2 pinMode(5, OUTPUT); //Red Sig 2 pinMode(10, OUTPUT); //Red Sig1 pinMode(11, OUTPUT); //Yellow Sig1 pinMode(12, OUTPUT); //Green Sig1 pinMode(2, INPUT_PULLUP); } /* The loop function runs forever waiting for an input from switch */ void loop() { if(digitalRead(2) == LOW){ lightSignal1(); } } //This loop cycles when switch pushed turning the lights off in sequence void lightSignal1(){ digitalWrite(12, LOW); //Green Sig1 digitalWrite(10, HIGH); //Red Sig1 delay(6000); //Delay 6 seconds digitalWrite(4, LOW); //Green Sig2 digitalWrite(5, HIGH); //Red sig2 delay(2000); //Delay 2 seconds digitalWrite(10, LOW); //Red Sig1 digitalWrite(11, HIGH); //Yellow Sig1 delay(6000); //Delay 6 seconds digitalWrite(11, LOW); //Yellow Sig1 digitalWrite(12, HIGH); //Green Sig1 delay(1000); //Delay 1 Second digitalWrite(5, LOW); //Red Sig2 digitalWrite(4, HIGH); //Green sig2 }