//A tensão de trabalho dos leds é de 2,4V
//A corrente é de 16mA
//A resistência do resistor é de 150,0 OHms
#define VERMELHO 2
#define VERDE 4
#define SENSOR_ENTRADA 7
#define SENSOR_SAIDA 8
void setup() {
pinMode(VERMELHO,OUTPUT);
pinMode(VERDE, OUTPUT);
digitalWrite(VERMELHO,LOW);
digitalWrite(VERDE,HIGH);
Serial.begin(9600);
pinMode(SENSOR_ENTRADA,INPUT_PULLUP);
pinMode(SENSOR_SAIDA,INPUT_PULLUP);
}
unsigned long tempoUltimoDebounce;
unsigned long tempoDebounce = 1000;
int numCarros;
int estadoSensorEntrada;
int
void loop() {
debounceBotao();
if(Serial.available()>0){
delay(20);
if(digitalRead(estadoSensorEntrada) == 1){
numCarros=numCarros+1;
Serial.print("Entrada detectada | Total de carros -> ");
Serial.println(numCarros);
delay(500);
}
if(digitalRead(SENSOR_SAIDA) == 1){
numCarros=numCarros-1;
Serial.print("Saída detectada | Total de carros -> ");
Serial.println(numCarros);
delay(500);
}
}
if(numCarros >= 15){
digitalWrite(VERMELHO, HIGH);
digitalWrite(VERDE, LOW);
}
if(numCarros < 15){
digitalWrite(VERDE, HIGH);
digitalWrite(VERMELHO, LOW);
}
}
void debounceBotao() {
if(digitalRead(SENSOR_ENTRADA) == 0){
tempoUltimoDebounce = millis();
}
if((millis() - tempoUltimoDebounce) < tempoDebounce){
Serial.print("ERRO DETECTADO! Sensor ativado por tempo insuficiente.");
digitalWrite(estadoSensorEntrada == LOW);
}else{
digitalWrite(estadoSensorEntrada == HIGH);
}
if((millis() - tempoUltimoDebounce) >= tempoDebounce){
digitalWrite(estadoSensorEntrada == HIGH);
}else{
digitalWrite(estadoSensorEntrada == LOW);
}
}