#include <ESP32Servo.h>
const int entryPIRPin = 34;
const int exitPIRPin = 22;
const int doorPin = 23;
Servo doorServo;
int parkedCars = 0;
bool isDoorOpen = false;
void setup() {
pinMode(entryPIRPin, INPUT);
pinMode(exitPIRPin, INPUT);
doorServo.attach(doorPin);
closeDoor();
Serial.begin(9600);
}
void loop() {
if (digitalRead(entryPIRPin) == HIGH) {
if (parkedCars < 5) {
parkedCars++;
Serial.println("Car entered. Parked cars: " + String(parkedCars));
delay(1000);
} else {
Serial.println("Parking full. Car denied entry.");
}
while (digitalRead(entryPIRPin) == HIGH);
}
if (digitalRead(exitPIRPin) == HIGH) {
if (parkedCars > 0) {
parkedCars--;
Serial.println("Car exited. Parked cars: " + String(parkedCars));
if (isDoorOpen) {
closeDoor();
}
delay(1000);
} else {
Serial.println("No cars parked. Exit sensor malfunction?");
}
while (digitalRead(exitPIRPin) == HIGH);
}
if (!isDoorOpen) {
openDoor();
}
delay(100);
}
void openDoor() {
if (parkedCars < 5) {
doorServo.write(90);
isDoorOpen = true;
Serial.println("Door opened.");
}
}
void closeDoor() {
doorServo.write(0);
isDoorOpen = false;
Serial.println("Door closed.");
}