// Viral Science www.viralsciencecreativity.com www.youtube.com/c/viralscience
// Arduino Car Parking System
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); //Change the HEX address
#include <Servo.h>
int p1 = 13;
int p3 = 8;
Servo myservo1;
int IR1 = 2;
int IR2 = 4;
int Slot = 2; //Enter Total number of parking Slots
int flag1 = 0;
int flag2 = 0;
void setup() {
lcd.init();
lcd.backlight();
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(p1, OUTPUT);
pinMode(p3, OUTPUT);
myservo1.attach(3);
myservo1.write(100);
lcd.setCursor (0, 0);
lcd.print(" ARDUINO ");
lcd.setCursor (0, 1);
lcd.print(" PARKING SYSTEM ");
delay (2000);
lcd.clear();
}
void loop() {
if (digitalRead (IR1) == LOW && flag1 == 0) {
if (Slot > 0) {
flag1 = 1;
if (flag2 == 0) {
myservo1.write(0);
digitalWrite(p3, HIGH);
delay (5000);
digitalWrite(p3, LOW);
Slot = Slot - 1;
}
} else {
lcd.setCursor (0, 0);
digitalWrite(p1, HIGH);
delay (5000);
digitalWrite(p1, LOW);
lcd.print(" SORRY :( ");
lcd.setCursor (0, 1);
lcd.print(" Parking Full ");
delay (3000);
lcd.clear();
}
}
if (digitalRead (IR2) == LOW && flag2 == 0) {
flag2 = 1;
if (flag1 == 0) {
myservo1.write(0);
Slot = Slot + 1;
}
}
if (flag1 == 1 && flag2 == 1) {
delay (1000);
myservo1.write(100);
flag1 = 0, flag2 = 0;
}
lcd.setCursor (0, 0);
lcd.print(" WELCOME! ");
lcd.setCursor (0, 1);
lcd.print("Slot Left: ");
lcd.print(Slot);
}