#define EAST 3
#define WEST 13
int direction = EAST;
int requestedDirection = EAST;
void setup() {
// put your setup code here, to run once:
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(EAST, INPUT);
pinMode(WEST, INPUT);
digitalWrite(EAST-3, HIGH);
digitalWrite(WEST-1, HIGH);
}
void processLightRequest() {
if (direction != requestedDirection) {
delay(2000);
digitalWrite(direction-3, LOW);
digitalWrite(direction-2, HIGH);
delay(3000);
digitalWrite(direction-2, LOW);
digitalWrite(direction-1, HIGH);
delay(1000);
direction = requestedDirection;
digitalWrite(direction-2, HIGH);
digitalWrite(direction-1, LOW);
delay(3000);
digitalWrite(direction-3, HIGH);
digitalWrite(direction-2, LOW);
}
}
void loop() {
// put your main code here, to run repeatedly:
if ((digitalRead(EAST) == HIGH)){
requestedDirection = EAST;
processLightRequest();
}
if (digitalRead(WEST) == HIGH) {
requestedDirection = WEST;
processLightRequest();
}
}