//Luana Leonor - 2,4 x 0,015 = 160
// DEFINES
#define led_vm 10
// LED para controle do limite dos carros
#define led_vd 5
// LED de controle para entrada dos carros
#define snEntrada 3
// Sensor para detecção de entrada dos carros
#define snSaida 11
// Sensor para detecção de saída dos carros
int numCarros = 0;
// Número do total de carros no estacionamento
bool estadoAAnterior = LOW;
bool estadoBAnterior = LOW;
void setup() {
// Sensor de entrada ou saída
pinMode(snEntrada, INPUT_PULLUP);
pinMode(snSaida, INPUT_PULLUP);
pinMode(led_vd, OUTPUT);
pinMode(led_vm, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Sensor de entrada
bool estadoAAtual = digitalRead(snEntrada);
bool estadoBAtual = digitalRead(snSaida);
if (estadoAAtual == HIGH && estadoAAnterior == LOW) {
estadoAAtual = 1;
delay(300);
// Sensor de saida
if (digitalRead(snSaida) == HIGH && estadoAAtual == HIGH) {
numCarros++;
Serial.print("ENTRADA detectada | Total de carros -> ");
Serial.println(numCarros);
}
}
if (estadoBAtual == HIGH && estadoBAnterior == LOW) {
estadoBAtual = 1;
delay(300);
if (digitalRead(snEntrada) == HIGH) {
numCarros--;
Serial.print("SAÍDA detectada | Total de carros -> ");
Serial.println(numCarros);
}
}
estadoAAnterior = estadoAAtual;
estadoBAnterior = estadoBAtual;
// Detecta limites de carros
if (numCarros < 15) {
digitalWrite(led_vd, HIGH);
// Acende o LED verde
}
if (numCarros < 15) {
digitalWrite(led_vd, HIGH); // Acende o LED Verde
} else {
numCarros >15;
digitalWrite(led_vd, LOW); // Desliga o LED verde
}
if (numCarros > 15) {
digitalWrite(led_vm, HIGH); // Acende o LED Vermelho
} else {
numCarros <15;
digitalWrite(led_vm, LOW); // Desliga o LED Vermelho
}
if (numCarros == 15) {
digitalWrite(led_vm, HIGH); // Acende o LED Vermelho
}
}