// Car Light "Color" = clc
#define clr 19
#define cly 18
#define clg 5
//Human Light "Color" = hlc
#define hlg 17
#define hlr 16
//Handlight
#define ticker 4
//Button
#define button 0
//int initialisation
int cycle = 0;
void setup() {
Serial.begin(9600);
Serial.println("--------------------------");
Serial.println("- -");
Serial.println("- Initializing... -");
Serial.println("- -");
Serial.println("--------------------------");
//INPUTS
pinMode(button, INPUT);
//OUTPUTS
pinMode(clr, OUTPUT);
pinMode(cly, OUTPUT);
pinMode(clg, OUTPUT);
pinMode(hlg, OUTPUT);
pinMode(hlr, OUTPUT);
pinMode(ticker, OUTPUT);
//Light Initialization
digitalWrite(clr, LOW);
digitalWrite(cly, LOW);
digitalWrite(clg, HIGH);
digitalWrite(hlg, LOW);
digitalWrite(hlr, HIGH);
digitalWrite(ticker, LOW);
}
void loop() {
//if button press enable traffic light cycle
if (analogRead(button) == 0) {
lightChange();
}
}
void lightChange() {
if (cycle == 0) {
cycle++; //lock
handLight();
toRed();
toGreen();
toRed2();
toGreen2();
cycle--; //unlock
}
}
void handLight() {
//makes hand light cycle trough on/off with 500ms intervals (x10)
for (int x = 0; x < 16; x++) {
delay(500);
digitalWrite(ticker, HIGH);
delay(500);
digitalWrite(ticker, LOW);
}
}
void toRed() {
//cycles light from green to red
digitalWrite(clg, LOW);
digitalWrite(cly, HIGH);
digitalWrite(ticker, HIGH);
delay(500);
digitalWrite(ticker, LOW);
delay(500);
digitalWrite(ticker, HIGH);
delay(500);
digitalWrite(ticker, LOW);
digitalWrite(cly, LOW);
digitalWrite(clr, HIGH);
}
void toGreen() {
//cycles pedestrian light to green
delay(3000);
digitalWrite(hlr, LOW);
digitalWrite(hlg, HIGH);
}
void toRed2() {
// cycles pedestrian to red
delay(10000);
digitalWrite(hlr, HIGH);
digitalWrite(hlg, LOW);
}
void toGreen2() {
// cycles traffic light to green
delay (3000);
digitalWrite(clr, LOW);
digitalWrite(clg, HIGH);
}