Hey,
I'm making a traffic light that turns green when a photo resistor detects motion (touch it). The physical component of it is working (with a simple code), however when I add the code into the traffic light code it just doesn't work. Please help, I have been trying for a long time. Thanks!
int NorthRed = 11; //North Red Traffic light being assigned
int NorthYellow = 12; //North Yellow Traffic light being assigned
int NorthGreen = 13; //North Green Traffic light being assigned
int pedRed = 8; //pedistrian red light being assigned
int pedGreen = 10; //pedistrian green light being assigned
int button = 7;//button pin being assigned
int EastRed = 6; //East Red Traffic light being assigned
int EastYellow = 5; //East Yellow Traffic light being assigned
int EastGreen = 4; //East Green Traffic light being assigned
int SouthRed = 3; //South Red Traffic light being assigned
int SouthYellow = 2; //South Yellow Traffic light being assigned
int SouthGreen = 1; //South Green Traffic light being assigned
int lightPin = 0;
int ledPin = 1;
int crossTime = 3000; //crossing time given to pedestrians (3 seconds)
unsigned long changeTime ; // collects the time since the button was last pressed
void setup () {
// setup digital I/O pins
pinMode(ledPin, OUTPUT); //sets the led pin to output
pinMode(NorthRed, OUTPUT);
pinMode(NorthYellow, OUTPUT);
pinMode(NorthGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(button, INPUT);
pinMode(EastRed,OUTPUT);
pinMode(EastYellow, OUTPUT);
pinMode(EastGreen, OUTPUT);
pinMode(SouthRed,OUTPUT);
pinMode(SouthYellow, OUTPUT);
pinMode(SouthGreen, OUTPUT);
// set intial state for lights
digitalWrite(pedRed, HIGH); //start with red ped light on
digitalWrite(EastGreen, HIGH); //start with east green light on
digitalWrite(NorthRed,HIGH); //start with north red light on
digitalWrite(SouthRed,HIGH); //start with south red light on
}
void loop(){
/* check if button is pressed
and it is over 3 sec since last button press*/
int state = digitalRead(button);
if(state==HIGH && (millis() - changeTime) > 3000) {
changeLights(); //function to change lights
int lightLevel = analogRead(lightPin); //Read the
// lightlevel
lightLevel = map(lightLevel, 0, 900, 0, 255);
//adjust the value 0 to 900 to
//span 0 to 255
lightLevel = constrain(lightLevel, 0, 255);//make sure the
//value is between
//0 and 255
analogWrite(ledPin, lightLevel); //write the value
}
}
void changeLights() {
digitalWrite(EastGreen, LOW); //East green light off
digitalWrite(EastRed, LOW); //East red light off
digitalWrite(EastYellow, HIGH); //East yellow light on
delay(2000); //wait 2 seconds
digitalWrite(EastYellow, LOW); //East yellow light off
digitalWrite(EastGreen, LOW); //East green light off
digitalWrite(NorthRed, LOW); //North red light off
digitalWrite(SouthRed, LOW); //South red light off
digitalWrite(EastYellow, LOW); //East yellow light off
digitalWrite(NorthGreen, HIGH); //North green light on
digitalWrite(SouthGreen, HIGH); //South green light on
digitalWrite(EastGreen, LOW); //East green light off
digitalWrite(EastRed, HIGH); //East red light on
digitalWrite(NorthGreen,LOW); //North green light off
digitalWrite(SouthGreen,LOW); //South green light off
digitalWrite(NorthRed, HIGH); //North red light on
digitalWrite(SouthRed,HIGH); //South red light on
digitalWrite(EastRed, LOW); //East red light off
digitalWrite(EastYellow, HIGH); // East yellow light on
delay(2000); //wait 2 seconds
digitalWrite(EastYellow,LOW); // East yellow light off
digitalWrite(NorthYellow,LOW); //North yellow light off
digitalWrite(SouthYellow,LOW); //South yellow light off
digitalWrite(NorthRed,LOW); //North red light off
digitalWrite(SouthRed,LOW); //South red light off
digitalWrite(EastGreen, LOW); //East green light off
digitalWrite(EastYellow, LOW); // East yellow light off
digitalWrite(EastRed, HIGH); //East red light on
digitalWrite(pedRed,HIGH); //ped red light on
digitalWrite(pedGreen,LOW); //ped green light on
digitalWrite(NorthRed, HIGH); //North red light on
digitalWrite(SouthRed, HIGH); //South red light on
digitalWrite(NorthRed, LOW); //North red light off
digitalWrite(SouthRed, LOW); //South red light off
digitalWrite(SouthGreen,HIGH); //South green light on
digitalWrite(NorthGreen,HIGH); //North green light on
delay(500); //wait 0.5 seconds to turn on ped light
digitalWrite(pedRed,LOW); //red ped light off
digitalWrite(pedGreen,HIGH); //green ped light on. allow crossing
delay(crossTime); //delay preset time of 3 seconds
//flashing of ped green light
for (int x=0; x<10; x++){
digitalWrite(pedGreen,HIGH); //ped green light on
delay(250); //wait 0.25 seconds
digitalWrite(pedGreen,LOW); //ped green light off
delay(250); //wait 0.25 seconds
}
digitalWrite(pedGreen, LOW); //green ped light off
delay(100); //wait 0.1 seconds
digitalWrite(NorthGreen, LOW); //North green light off
digitalWrite(SouthGreen, LOW); //South green light off
digitalWrite(SouthYellow, HIGH); //South yellow light on
digitalWrite(NorthYellow, HIGH); //North yellow light on
delay(1000); //wait 1 second
digitalWrite(NorthYellow, LOW); //North yellow light off
digitalWrite(SouthYellow, LOW); //South yellow light off
digitalWrite(pedRed, HIGH); //ped red light on
digitalWrite(NorthGreen,LOW); //North green light off
digitalWrite(SouthGreen,LOW); //South green light off
digitalWrite(EastRed, LOW); //East red light off
digitalWrite(NorthRed,HIGH); //North red light off
digitalWrite(SouthRed,HIGH); //South red light off
digitalWrite(pedGreen,LOW); //ped green light off
digitalWrite(EastGreen, HIGH); //East green light on
changeTime = millis(); //record time since last lights change
}