int dataPin = 5;
int clockPin = 7;
int latchPin = 6;
int carYellow = 11;
int carGreen = 10;
int pedGreen = 8;
int carRed = 12;
int pedRed = 9;
int crossTimeSec = 11;
int cartime = 30000;
int variable;
unsigned long changeTime;
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(carRed, OUTPUT);
pinMode(pedRed, OUTPUT);
digitalWrite(carGreen, HIGH);
digitalWrite(pedRed, HIGH);
}
int pattern = 0b11111111;
int digitPattern[10] = {0b00000011,0b10011111,0b00100101,0b00001101,0b10011001,
0b01001001,0b01000001,0b00011111,0b00000001,0b00001001};
void changeLights(){
digitalWrite(carGreen, LOW);
digitalWrite(carYellow, HIGH);
delay(2000);
digitalWrite(carYellow, LOW);
digitalWrite(carRed, HIGH);
delay(2000);
digitalWrite(pedRed, LOW);
digitalWrite(pedGreen, HIGH);
for (int p =crossTimeSec; p >= 0;p--){
num(p);
if (p>5){
delay(2000);
}else{
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
}
}
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
// turn ped red on
digitalWrite(pedRed, HIGH);
delay(1000);
digitalWrite(carYellow, HIGH);
digitalWrite(carRed, LOW);
delay(1000);
digitalWrite(carGreen, HIGH);
digitalWrite(carYellow, LOW);
changeTime = millis();
}
void loop() {
changeLights();
}
void num(int variable){
if (variable < 10){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, digitPattern[variable]);
digitalWrite(latchPin, HIGH);
}else{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 0b11111110);
digitalWrite(latchPin, HIGH);
}
}