#include <Servo.h>
#include <LiquidCrystal.h>
const int trigPin1 = 8;
const int echoPin1 = 9;
const int trigPin2 = 10;
const int echoPin2 = 11;
const int trigPin3 = 12;
const int echoPin3 = 13;
const int greenLed = 13;
const int redLed = 12;
Servo myServo;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int vehicleCount = 0;
void setup() {
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(greenLed, OUTPUT);
pinMode(redLed, OUTPUT);
lcd.begin(16, 2);
myServo.attach(9);
lcd.print("Roll No: 2347125");
delay(2000);
lcd.clear();
myServo.write(0);
}
void loop() {
long duration1, distance1;
long duration2, distance2;
long duration3, distance3;
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = (duration1 / 2) / 29.1;
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = (duration2 / 2) / 29.1;
digitalWrite(trigPin3, LOW);
delayMicroseconds(2);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin3, LOW);
duration3 = pulseIn(echoPin3, HIGH);
distance3 = (duration3 / 2) / 29.1;
if (distance1 < 10) {
if (vehicleCount < 3) {
vehicleCount++;
lcd.clear();
lcd.print("Vehicle Entered");
myServo.write(90);
delay(2000);
myServo.write(0);
} else {
lcd.clear();
lcd.print("Parking Full");
}
}
if (distance2 < 10) {
if (vehicleCount > 0) {
vehicleCount--;
lcd.clear();
lcd.print("Vehicle Exited");
myServo.write(90);
delay(2000);
myServo.write(0);
}
}
if (vehicleCount == 3) {
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
lcd.clear();
lcd.print("Parking Full");
} else {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
lcd.clear();
lcd.print("Parking Space: ");
lcd.setCursor(0, 1);
lcd.print(3 - vehicleCount);
}
delay(500);
}