I want to make the micro send data only when the INPUT is HIGH for say, 30 seconds and after that it will send data to the traffic light that it will add time to the GREEN light because there is a long line of cars blocking the sensor. I want to know to do this. I just know how to set the time of the traffic light using the delay function. I used the sketch as follows;
int green1 = 13;
int yellow1 = 12;
int red1 = 11;
int green = 7;
int yellow = 6;
int red = 5;
void setup(){
pinMode(green1, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(red1, OUTPUT);
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(red, OUTPUT);
}
void loop(){
// first traffic light
digitalWrite(green1, HIGH);
digitalWrite(red, HIGH);
delay(10000);
digitalWrite(green1, LOW);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(green1, HIGH);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(green1, LOW);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(green1, HIGH);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(green1, LOW);
digitalWrite(red, HIGH);
delay(500);
digitalWrite(yellow1, HIGH);
digitalWrite(red, HIGH);
delay(2000);
digitalWrite(yellow1, LOW);
digitalWrite(red, LOW);
// second traffic light
digitalWrite(green, HIGH);
digitalWrite(red1, HIGH);
delay(10000);
digitalWrite(green, LOW);
digitalWrite(red1, HIGH);
delay(500);
digitalWrite(green, HIGH);
digitalWrite(red1, HIGH);
delay(500);
digitalWrite(green, LOW);
digitalWrite(red1, HIGH);
delay(500);
digitalWrite(green, HIGH);
digitalWrite(red1, HIGH);
delay(500);
digitalWrite(green, LOW);
digitalWrite(red1, HIGH);
delay(500);
digitalWrite(yellow, HIGH);
digitalWrite(red1, HIGH);
delay(2000);
digitalWrite(yellow, LOW);
digitalWrite(red1, LOW);
}