const int RED_SIGNAL = 25;
const int YELLOW_SIGNAL = 26;
const int GREEN_SIGNAL = 27;
const int RED_SIGNAL_PERSON = 18;
const int GREEN_SIGNAL_PERSON = 19;
const int BUTTON = 21;
const int SECONDS = 13;
const int DELAY_VALUE = 500;
void setup() {
Serial.begin(115200);
pinMode(RED_SIGNAL, OUTPUT);
pinMode(YELLOW_SIGNAL, OUTPUT);
pinMode(GREEN_SIGNAL, OUTPUT);
pinMode(RED_SIGNAL_PERSON, OUTPUT);
pinMode(GREEN_SIGNAL_PERSON, OUTPUT);
pinMode(BUTTON, INPUT);
lower(RED_SIGNAL);
lower(YELLOW_SIGNAL);
lower(GREEN_SIGNAL);
lower(RED_SIGNAL_PERSON);
lower(GREEN_SIGNAL_PERSON);
Serial.println("LIBERADO PARA O MOTORISTA");
}
void lower(int led) {
digitalWrite(led, LOW);
}
void higher(int led) {
digitalWrite(led, HIGH);
}
void higher(int led1, int led2) {
higher(led1);
higher(led2);
}
void lowerHigher(int led1, int led2) {
lower(led1);
higher(led2);
}
void blink(int quantity){
higher(GREEN_SIGNAL_PERSON);
delay(DELAY_VALUE);
lower(GREEN_SIGNAL_PERSON);
delay(DELAY_VALUE);
Serial.println((String) "ATENÇÃO PEDESTRE, O SINAL VAI FECHAR EM " + quantity + " SEGUNDO" + (quantity > 1 ? "S" : " "));
if (quantity - 1 > 0) blink(quantity - 1);
else delay(DELAY_VALUE * 2);
}
void loop() {
Serial.println((String)"Valor: " + digitalRead(BUTTON));
while(digitalRead(BUTTON) == 1){
higher(RED_SIGNAL_PERSON, GREEN_SIGNAL);
}
Serial.println("ATENÇÃO MOTORISTA, PREFERÊNCIA DO PEDESTRE");
delay(DELAY_VALUE * 4);
lowerHigher(GREEN_SIGNAL, YELLOW_SIGNAL);
delay(DELAY_VALUE * 4);
Serial.println("ATENÇÃO PEDESTRE, PODE PASSAR");
lowerHigher(YELLOW_SIGNAL, RED_SIGNAL);
lowerHigher(RED_SIGNAL_PERSON, GREEN_SIGNAL_PERSON);
delay(DELAY_VALUE * 10);
blink(SECONDS);
Serial.println("PEDESTRE, SINAL FECHADO!");
lowerHigher(GREEN_SIGNAL, RED_SIGNAL_PERSON);
lower(RED_SIGNAL);
Serial.println("MOTORISTA, PODE PROSSEGUIR");
}