/* Stoplight program
Written by Jacob Mason
6/12/2013
*/
//preprossessor directives
#define RED1 5
#define YELLOW1 4
#define GREEN1 3
#define RED2 11
#define YELLOW2 9
#define GREEN2 8
//declarations
int light1State = 0; //keep track of the state for light1
int light1Array[3] = {RED1, YELLOW1, GREEN1};
int last1 = RED1;
int last2 = GREEN2;
void setup() {
pinMode(RED1, OUTPUT);
pinMode(YELLOW1, OUTPUT);
pinMode(GREEN1, OUTPUT);
pinMode(RED2, OUTPUT);
pinMode(YELLOW2, OUTPUT);
pinMode(GREEN2, OUTPUT);
}
void loop() {
for (int i = 0; i < 3; i++) {
delay(2000);
digitalWrite(last1, LOW); //turn off the last light
digitalWrite(light1Array[i], HIGH); //turn on the next light in the array
last1 = light1Array[i]; //store the light that is currently on so it can be turned off later
light2(light1Array[i]); //determine which light to turn on (based on light 1) for traffic light 2
}
}
void light2(int state) {
digitalWrite(last2, LOW);
if (state == RED1) {
digitalWrite(GREEN2, HIGH);
last2 = GREEN2;
delay(2000);
}
else if (state == YELLOW1) {
digitalWrite(YELLOW2, HIGH);
last2 = YELLOW2;
}
else if (state == GREEN1) {
digitalWrite(RED2, HIGH);
last2 = RED2;
delay(2000);
}
}