I changed my logic a bit and wrote sections of codes which I call "programs".
All works fine except for the change from the two default programs to another program with the use of a pull-down push button. I have written a little code section just to check if the pull-down push button works as it should, and all checks out fine. What am I doing wrong? I suspect its in my condition comparison where I compare the state of the INPUT pin with a program condition, in other words I am comparing a program with a INPUT. I tried the Boolean function but no luck there either yet.
Any ideas?
Some of the coding is still "longhand" but I will shorten that later once I get the sketch to run like it should.
int pinLed=13; //Verify that button works
int carRedn=12; //Traffic North Red
int carGreenn=11; //Traffic South Green
int carReds=10; //Traffic North Red
int carGreens=9; //Traffic South Green
int pedRed=8; //Pedestrian Green
int pedGreen=7; //Pedestrian Green
int button=6; //Pedestrian button
void setup(){
pinMode(pinLed,OUTPUT);
pinMode(carRedn,OUTPUT);
pinMode(carGreenn,OUTPUT);
pinMode(carReds,OUTPUT);
pinMode(carGreens,OUTPUT);
pinMode(pedRed,OUTPUT);
pinMode(pedGreen,OUTPUT);
pinMode(button,INPUT);
northGo();
}
void loop(){
int state=digitalRead(button); //Reads the condition of input
if(state == HIGH&&(northGo)){ //Compares button condition with running program
digitalWrite(pinLed,HIGH); //Button check
delay(250);
digitalWrite(pinLed,LOW);
northpedgo(); //Since northGo is running, calls cancel program northpedgo
}
if(state == HIGH&&(southGo)){ //Compares button condition with running program
digitalWrite(pinLed,HIGH); //Button check
delay(250);
digitalWrite(pinLed,LOW);
southpedgo(); //Since southGo is running, calls cancel program southpedgo
}
if(state == HIGH&&(allRed)){ //Compares button condition with running program
digitalWrite(pinLed,HIGH); //Button check
delay(250);
digitalWrite(pinLed,LOW);
pedGo(); //Since allRed is running, calls cancel program pedGo
}
if(northGo){
northsouth();
}
if(southGo){
southnorth();
}
}
int allRed(){ //Everyone stops
digitalWrite(carRedn,HIGH);
digitalWrite(carGreenn,LOW);
digitalWrite(carReds,HIGH);
digitalWrite(carGreens,LOW);
digitalWrite(pedRed,HIGH);
digitalWrite(pedGreen,LOW);
delay(2000);
}
int northGo(){ //Northen traffic go, South & Pedestrian stop
digitalWrite(carRedn,LOW);
digitalWrite(carGreenn,HIGH);
digitalWrite(carReds,HIGH);
digitalWrite(carGreens,LOW);
digitalWrite(pedRed,HIGH);
digitalWrite(pedGreen,LOW);
delay(10000);
northsouth();
allRed();
}
int southGo(){ //Southern traffic go, North & Pedestrian stop
digitalWrite(carRedn,HIGH);
digitalWrite(carGreenn,LOW);
digitalWrite(carReds,LOW);
digitalWrite(carGreens,HIGH);
digitalWrite(pedRed,HIGH);
digitalWrite(pedGreen,LOW);
delay(10000);
southnorth();
allRed();
}
int pedGo(){ //Traffic stops, Pedestrians go
digitalWrite(carRedn,HIGH);
digitalWrite(carGreenn,LOW);
digitalWrite(carReds,HIGH);
digitalWrite(carGreens,LOW);
digitalWrite(pedRed,LOW);
digitalWrite(pedGreen,HIGH);
pedStop();
allRed();
northGo();
}
int pedStop(){ //Stops pedestrians, returns to NorthGo
digitalWrite(pedRed,HIGH);
delay(250);
digitalWrite(pedRed,LOW);
delay(250);
digitalWrite(pedRed,HIGH);
delay(250);
digitalWrite(pedRed,LOW);
delay(250);
digitalWrite(pedRed,HIGH);
delay(250);
digitalWrite(pedRed,LOW);
delay(250);
digitalWrite(pedRed,HIGH);
delay(50);
allRed();
northGo();
}
int northsouth(){ //Changes traffic from North to South
digitalWrite(carRedn,HIGH);
delay(250);
digitalWrite(carRedn,LOW);
delay(250);
digitalWrite(carRedn,HIGH);
delay(250);
digitalWrite(carRedn,LOW);
delay(250);
digitalWrite(carRedn,HIGH);
delay(250);
digitalWrite(carRedn,LOW);
delay(250);
digitalWrite(carRedn,HIGH);
delay(50);
allRed();
southGo();
}
int southnorth(){ //Changes traffic from South to North
digitalWrite(carReds,HIGH);
delay(250);
digitalWrite(carReds,LOW);
delay(250);
digitalWrite(carReds,HIGH);
delay(250);
digitalWrite(carReds,LOW);
delay(250);
digitalWrite(carReds,HIGH);
delay(250);
digitalWrite(carReds,LOW);
delay(250);
digitalWrite(carReds,HIGH);
delay(50);
allRed();
northGo();
}
int northpedgo(){ //Stops all traffic from NorthGo, pedestrian go
digitalWrite(carRedn,HIGH);
delay(250);
digitalWrite(carRedn,LOW);
delay(250);
digitalWrite(carRedn,HIGH);
delay(250);
digitalWrite(carRedn,LOW);
delay(250);
digitalWrite(carRedn,HIGH);
delay(250);
digitalWrite(carRedn,LOW);
delay(250);
digitalWrite(carRedn,HIGH);
delay(50);
allRed();
pedGo();
}
int southpedgo(){ //Stops all traffic from SouthGo, pedestrian go
digitalWrite(carReds,HIGH);
delay(250);
digitalWrite(carReds,LOW);
delay(250);
digitalWrite(carReds,HIGH);
delay(250);
digitalWrite(carReds,LOW);
delay(250);
digitalWrite(carReds,HIGH);
delay(250);
digitalWrite(carReds,LOW);
delay(250);
digitalWrite(carReds,HIGH);
delay(50);
allRed();
pedGo();
}