#define buzzer 4 // Pin para controlar el buzzer
#define led_verde 3 // indica si hay lugar disponible
#define led_rojo 2 // indica si no hay lugares disponibles
#define sensor_de_ingreso A3 // sensor que detecta el ingreso de vehículos
#define sensor_de_salida A2 // sensor que detecta la salida de vehículos
#define sensor_de_reset A4 // Sensor para resetear el buzzer
int cantidad_de_lugares = 3; // Inicialmente 3 lugares disponibles
void setup() {
pinMode(led_verde, OUTPUT); // LED verde como salida
pinMode(led_rojo, OUTPUT); // LED rojo como salida
pinMode(buzzer, OUTPUT); // Buzzer como salida
pinMode(sensor_de_ingreso, INPUT_PULLUP); // Sensor de ingreso como entrada
pinMode(sensor_de_salida, INPUT_PULLUP); // Sensor de salida como entrada
pinMode(sensor_de_reset, INPUT_PULLUP); // Sensor de reset como entrada
}
void loop() {
// Verifica si hay lugares disponibles
if (cantidad_de_lugares > 0) {
digitalWrite(led_verde, HIGH); // Enciende el LED verde
digitalWrite(led_rojo, LOW); // Apaga el LED rojo
noTone(buzzer); // Asegura que el buzzer esté apagado
} else {
digitalWrite(led_verde, LOW); // Apaga el LED verde
digitalWrite(led_rojo, HIGH); // Enciende el LED rojo
tone(buzzer, 1000); // Activa el buzzer con un tono de 1000 Hz
}
// Acciones asociadas al sensor de ingreso
if (digitalRead(sensor_de_ingreso) == LOW) { // Sensor de ENTRADA activado
cantidad_de_lugares--; // Reduce la cantidad de lugares disponibles
delay(500); // Pequeño retardo para evitar contar múltiples veces al mismo vehículo
}
// Acciones asociadas al sensor de salida
if (digitalRead(sensor_de_salida) == LOW) { // Sensor de SALIDA activado
cantidad_de_lugares++; // Aumenta la cantidad de lugares disponibles
delay(500); // Espera 500 ms para evitar múltiples conteos
}
// Acciones asociadas al sensor de reset
if (digitalRead(sensor_de_reset) == LOW) { // Sensor de RESET activado
noTone(buzzer); // Apaga el buzzer
cantidad_de_lugares = 3; // Reinicia el contador de lugares a 3
digitalWrite(led_verde, HIGH); // Enciende el LED verde
digitalWrite(led_rojo, LOW); // Apaga el LED rojo
delay(500); // Pequeño retardo para evitar rebotes
}
}