const int RED_PIN_1 = 4;
const int YELLOW_PIN_1 = 2;
const int GREEN_PIN_1 = 15;
const int RED_PIN_2 = 14;
const int YELLOW_PIN_2 = 12;
const int GREEN_PIN_2 = 13;
const int LIGHT_SENSOR_PIN = 5;
const int RAIN_SENSOR_PIN = 27;
const int ADVANCE_TIME = 4700;
int currentAdvanceTime = ADVANCE_TIME;
const int LIGHT_THRESHOLD = 500;
const int RAIN_THRESHOLD = 500;
void setup() {
pinMode(LIGHT_SENSOR_PIN, INPUT);
pinMode(RAIN_SENSOR_PIN, INPUT);
pinMode(RED_PIN_1, OUTPUT);
pinMode(YELLOW_PIN_1, OUTPUT);
pinMode(GREEN_PIN_1, OUTPUT);
pinMode(RED_PIN_2, OUTPUT);
pinMode(YELLOW_PIN_2, OUTPUT);
pinMode(GREEN_PIN_2, OUTPUT);
Serial.begin(9600);
}
void loop() {
int lightValue = analogRead(LIGHT_SENSOR_PIN);
int rainValue = analogRead(RAIN_SENSOR_PIN);
if (rainValue > RAIN_THRESHOLD && lightValue < LIGHT_THRESHOLD) {
currentAdvanceTime = ADVANCE_TIME * 2;
Serial.println("Está chovendo! Aumentando tempo de passagem.");
} else {
currentAdvanceTime = ADVANCE_TIME;
}
digitalWrite(RED_PIN_2, HIGH);
delay(currentAdvanceTime / 4);
digitalWrite(GREEN_PIN_1, HIGH);
delay(currentAdvanceTime / 2);
digitalWrite(GREEN_PIN_1, LOW);
digitalWrite(YELLOW_PIN_1, HIGH);
delay(currentAdvanceTime / 4);
digitalWrite(YELLOW_PIN_1, LOW);
digitalWrite(RED_PIN_1, HIGH);
delay(currentAdvanceTime / 4);
digitalWrite(RED_PIN_2, LOW);
delay(currentAdvanceTime / 4);
digitalWrite(GREEN_PIN_2, HIGH);
delay(currentAdvanceTime / 2);
digitalWrite(GREEN_PIN_2, LOW);
digitalWrite(YELLOW_PIN_2, HIGH);
delay(currentAdvanceTime / 4);
digitalWrite(YELLOW_PIN_2, LOW);
delay(currentAdvanceTime / 4);
digitalWrite(RED_PIN_2, HIGH);
delay(currentAdvanceTime / 4);
digitalWrite(RED_PIN_1, LOW);
delay(currentAdvanceTime / 4);
delay(200);
}