#define BOTAO_ENTRADA 2
#define BOTAO_SAIDA 3
#define LED_VERDE 8
#define LED_VERMELHO 9
#define MAX_CARROS 15
int contadorCarros = 0;
void setup() {
pinMode(BOTAO_ENTRADA, INPUT_PULLUP);
pinMode(BOTAO_SAIDA, INPUT_PULLUP);
pinMode(LED_VERDE, OUTPUT);
pinMode(LED_VERMELHO, OUTPUT);
Serial.begin(9600);
atualizarSemaforo();
}
void loop() {
if (digitalRead(BOTAO_ENTRADA) == LOW) {
delay(50);
if (digitalRead(BOTAO_ENTRADA) == LOW) {
contadorCarros++;
Serial.print("Entrada detectada | Total de carros -> ");
Serial.println(contadorCarros);
atualizarSemaforo();
while (digitalRead(BOTAO_ENTRADA) == LOW);
}
}
if (digitalRead(BOTAO_SAIDA) == LOW) {
delay(50);
if (digitalRead(BOTAO_SAIDA) == LOW) {
contadorCarros--;
if (contadorCarros < 0) contadorCarros = 0;
Serial.print("Saida detectada | Total de carros -> ");
Serial.println(contadorCarros);
atualizarSemaforo();
while (digitalRead(BOTAO_SAIDA) == LOW);
}
}
}
void atualizarSemaforo() {
if (contadorCarros >= MAX_CARROS) {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_VERMELHO, HIGH);
} else {
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_VERMELHO, LOW);
}
}