#define BLYNK_TEMPLATE_ID "TMPL27CcT7Q_K"
#define BLYNK_TEMPLATE_NAME "Parking System"
#define BLYNK_AUTH_TOKEN "9smhtFRSy-SKrLboiFhwUUzExIQ2QCfq"
// Comment this out to disable prints and save space
LiquidCrystal_I2C lcd(0x27, 16, 2);
int IR1 = 4; // IR Sensor 1
int IR2 = 7; // IR Sensor 2
int Slot = 2; //Enter Total number of parking Slots
int flag1 = 0;
int flag2 = 0;
int trigPin = A0; // TRIG pin
int echoPin = A1; // ECHO pin
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701
float duration_us, distance_cm;
float distanceInch;
void setup() {
// configure the trigger pin to output mode
pinMode(trigPin, OUTPUT);
// configure the echo pin to input mode
pinMode(echoPin, INPUT);
pinMode(1,OUTPUT);
pinMode(0,OUTPUT);
lcd.init();
lcd.backlight();
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
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){
digitalWrite(0, HIGH);
delay(2000);
digitalWrite(0, LOW);
if(Slot>0){
flag1=1;
if(flag2==0){
Slot = Slot-1;
}
}
else{
digitalWrite(1, HIGH);
delay(1000);
digitalWrite(1, LOW);
lcd.setCursor (0,0);
lcd.print(" SORRY :( ");
lcd.setCursor (0,1);
lcd.print(" Parking Full ");
delay (1000);
lcd.clear();
delay(3000);
}
}
if(digitalRead (IR2) == LOW && flag2==0){
digitalWrite(0, HIGH);
delay(2000);
digitalWrite(0, LOW);
flag2=1;
if(flag1==0){
Slot = Slot+1;
}
}
if(flag1==1 && flag2==1){
digitalWrite(0, HIGH);
delay(2000);
digitalWrite(0, LOW);
delay (1000);
flag1=0,
flag2=0;
}
lcd.setCursor(0, 0);
lcd.print(" WELCOME! ");
lcd.setCursor(0, 1);
lcd.print("Slot Left: ");
lcd.print(Slot);
delay(1000);
lcd.clear();
delay(100);
digitalWrite(IR1, HIGH);
delay(1000);
digitalWrite(IR1, LOW);
delay(1000);
digitalWrite(IR2, HIGH);
delay(1000);
digitalWrite(IR2, LOW);
delay(1000);
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// generate 10-microsecond pulse to TRIG pin
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// measure duration of pulse from ECHO pin
duration_us = pulseIn(echoPin, HIGH);
// calculate the distance
distance_cm = 0.017 * duration_us;
distanceInch = distance_cm * CM_TO_INCH;
// print the value to Serial Monitor
lcd.setCursor(0, 0);
lcd.print("Distance (cm) ");
lcd.setCursor(0, 1);
lcd.print(distance_cm);
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance (inch)");
lcd.setCursor(0, 1);
lcd.print(distanceInch);
delay(1000);
lcd.clear();
delay(1000);
}