void setup() {
#include <Servo.h>
// Define IR sensor pins
#define IR_SENSOR_1 2
#define IR_SENSOR_2 3
#define IR_SENSOR_3 4
#define IR_SENSOR_4 5
// Define LED pins
#define GREEN_LED 6
#define RED_LED 7
// Servo motor pin
Servo gateServo;
#define SERVO_PIN 8
// Total parking slots
const int totalSlots = 4;
// Parking slot status variables
int slot1, slot2, slot3, slot4;
void setup() {
// Initialize IR sensor pins
pinMode(IR_SENSOR_1, INPUT);
pinMode(IR_SENSOR_2, INPUT);
pinMode(IR_SENSOR_3, INPUT);
pinMode(IR_SENSOR_4, INPUT);
// Initialize LED pins
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
// Attach the servo motor
gateServo.attach(SERVO_PIN);
gateServo.write(0); // Initial position: gate closed
// Start the Serial Monitor (for debugging)
Serial.begin(9600);
Serial.println("Smart Parking System Initialized");
}
void loop() {
// Read values from IR sensors
slot1 = digitalRead(IR_SENSOR_1);
slot2 = digitalRead(IR_SENSOR_2);
slot3 = digitalRead(IR_SENSOR_3);
slot4 = digitalRead(IR_SENSOR_4);
// Calculate the number of available slots
int occupiedSlots = slot1 + slot2 + slot3 + slot4;
int availableSlots = totalSlots - occupiedSlots;
// Update LED indicators
if (availableSlots > 0) {
digitalWrite(GREEN_LED, HIGH); // Green LED ON
digitalWrite(RED_LED, LOW); // Red LED OFF
} else {
digitalWrite(GREEN_LED, LOW); // Green LED OFF
digitalWrite(RED_LED, HIGH); // Red LED ON
}
// Control the gate using the servo motor
if (availableSlots > 0) {
Serial.println("Slots Available. Gate Opening...");
gateServo.write(90); // Open the gate
delay(5000); // Keep the gate open for 5 seconds
Serial.println("Gate Closing...");
gateServo.write(0); // Close the gate
} else {
Serial.println("No Slots Available. Gate Closed.");
gateServo.write(0); // Keep the gate closed
}
// Display status in Serial Monitor
Serial.print("Occupied Slots: ");
Serial.println(occupiedSlots);
Serial.print("Available Slots: ");
Serial.println(availableSlots);
// Wait for 1 second before repeating the loop
delay(1000);
}
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}