i am trying to code a traffic light system with pedestrian signals as well as sound a buzzer. it is not actually working, it is just running through "mainStop()" and "mainGo()" without the need for pressing the button. any help is appreciated!
//labeling pins used
const int redLED = 12; //pin 12 labeled as redLED
const int yellowLED = 11; //pin 11 labeled as yellowLED
const int greenLED = 10; //pin 10 labeled as greenLED
const int pedRed = 8; //pin 8 labeled as pedRed
const int pedGreen = 7; //pin 7 labeled as pedGreen
const int buzzer = 6;
const int button = 4; //pin 5 labeled as button
//declare constant for button
int buttonPress = 0; //state of the button being pressed is 0 (off)
int sound = 500;
void setup()
{
//stating outputs and inputs
pinMode(redLED, OUTPUT); //red LED is an output
pinMode(yellowLED, OUTPUT); //yellow LED is an output
pinMode(greenLED, OUTPUT); //green LED is an output
pinMode(pedRed, OUTPUT); //pedestrian stop LED is an output
pinMode(pedGreen, OUTPUT); //pedestrian go LED is an output
pinMode(button, INPUT); //button is an input
}
void loop()
{
if (digitalRead(button) == HIGH)
{
mainStop(); //run the mainStop() function
delay(15000); //wait for 15 seconds for pedestrians to cross
mainGo(); //run the mainGo() function
}
else
{
digitalWrite(greenLED, HIGH);
digitalWrite(pedRed, HIGH);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(pedGreen, LOW);
}
}
void mainStop()
{
//cycle through the "stop" phase for cars
digitalWrite(greenLED, HIGH); //green LED on
digitalWrite(pedRed, HIGH); //pedestrian stop LED on
delay(3000); //wait quarter a second
digitalWrite(yellowLED, HIGH); //yellow LED on
delay(3000); //wait 3 seconds
digitalWrite(greenLED, LOW); //green LED off
digitalWrite(yellowLED, LOW); //yellow LED off
digitalWrite(redLED, HIGH); //red LED on
digitalWrite(pedGreen, HIGH); //pedestrian go LED on
digitalWrite(pedRed, LOW); //pedestrian stop LED off
//this is to countdown the repetitions of the buzzer sounding
while(pedGreen == HIGH)
{
tone(buzzer, 500);
delay(100);
tone(buzzer, 1000);
delay(100);
}
}
void mainGo()
{
//cycle through the "go" phase for cars
digitalWrite(redLED, HIGH); //red LED on
digitalWrite(yellowLED, HIGH); //yellow LED on
digitalWrite(greenLED, LOW); //green LED off
digitalWrite(pedGreen, LOW); //pedestrian go LED off
digitalWrite(pedRed, HIGH); //pedestrian stop LED on
delay(3000); //wait 3 seconds
digitalWrite(redLED, LOW); //red LED off
digitalWrite(yellowLED, LOW); //yellow LED off
digitalWrite(greenLED, HIGH); //green LED on
delay(100); //wait 1ms
}