#define NUM_PARKING_SPOTS 4
// Pins for ultrasonic sensors
const int sensorPins[NUM_PARKING_SPOTS] = {2, 3, 4, 5}; // Example pins, adjust as needed
// Array to store parking spot statuses (0 for vacant, 1 for occupied)
int parkingStatus[NUM_PARKING_SPOTS] = {0};
void setup() {
Serial.begin(9600);
// Initialize sensor pins as inputs
for (int i = 0; i < NUM_PARKING_SPOTS; i++) {
pinMode(sensorPins[i], INPUT);
}
}
void loop() {
// Check each parking spot
for (int i = 0; i < NUM_PARKING_SPOTS; i++) {
int distance = readDistance(sensorPins[i]);
// Check if parking spot is occupied
if (distance < 20) { // Adjust threshold as needed
if (parkingStatus[i] == 0) {
parkingStatus[i] = 1;
}
} else {
if (parkingStatus[i] == 1) {
parkingStatus[i] = 0;
}
}
}
// Print parking status to Serial Monitor
printParkingStatus();
delay(1000); // Adjust delay as needed
}
// Function to read distance from ultrasonic sensor
int readDistance(int pin) {
long duration;
int distance;
digitalWrite(pin, LOW);
delayMicroseconds(2);
digitalWrite(pin, HIGH);
delayMicroseconds(10);
digitalWrite(pin, LOW);
duration = pulseIn(pin, HIGH);
distance = duration * 0.034 / 2; // Speed of sound = 0.034 cm/microsecond
return distance;
}
// Function to print parking status to Serial Monitor
void printParkingStatus() {
Serial.println("Parking Status:");
for (int i = 0; i < NUM_PARKING_SPOTS; i++) {
Serial.print("Spot ");
Serial.print(i + 1);
Serial.print(": ");
if (parkingStatus[i] == 0) {
Serial.println("Vacant");
} else {
Serial.println("Occupied");
}
}
}