#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigPins[4] = {5, 11, 9, 7};
const int echoPins[4] = {8, 4, 6, 10};
const int greenLEDs[4] = {2, 3, 12, 13};
const int redLEDs[4] = {A0, A1, A2, A3};
long duration;
int distance[4];
void setup() {
lcd.begin(16,2);
lcd.backlight();
for (int i = 0; i < 4; i++) {
pinMode(trigPins[i], OUTPUT);
pinMode(echoPins[i], INPUT);
pinMode(greenLEDs[i], OUTPUT);
pinMode(redLEDs[i], OUTPUT);
}
lcd.setCursor(0, 0);
lcd.print("Estacionamento");
delay(2000);
lcd.clear();
}
void loop() {
for (int i = 0; i < 4; i++) {
digitalWrite(trigPins[i], LOW);
delayMicroseconds(2);
digitalWrite(trigPins[i], HIGH);
delayMicroseconds(10);
digitalWrite(trigPins[i], LOW);
duration = pulseIn(echoPins[i], HIGH);
distance[i] = duration * 0.034 / 2;
if (distance[i] <= 10) {
digitalWrite(greenLEDs[i], LOW);
digitalWrite(redLEDs[i], HIGH);
} else {
digitalWrite(greenLEDs[i], HIGH);
digitalWrite(redLEDs[i], LOW);
}
}
lcd.setCursor(0, 0);
lcd.print("Vagas: ");
for (int i = 0; i < 4; i++) {
lcd.print(i + 1);
if (distance[i] <= 10) {
lcd.print("O ");
} else {
lcd.print("L "); // L = Livre
}
}
delay(1000);
}