#define BLYNK_TEMPLATE_ID "TMPLIz-fX_vl"
#define BLYNK_DEVICE_NAME "Smart Parking"
#define BLYNK_AUTH_TOKEN "3C4Q8qg9sXqQ0rUnFb88NCdGCvm7ggnj"
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#include<BlynkSimpleEsp32.h>
char token[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
LiquidCrystal_I2C lcd(0x27,16,2); //Change the HEX address
Servo myservo1;
int IR1 = 2;
int IR2 = 4;
int Slot = 4; //Enter Total number of parking Slots
int flag1 = 0;
int flag2 = 0;
String boot = " SMART ";
String boot2 = " PARKING SYSTEM ";
String prk = " MAAF :( ";
String prk2 = " PARKIRAN PENUH ";
String slot = "SELAMAT DATANG ! ";
String slot2 = "SLOT TERSEDIA: ";
WidgetLCD lcd2(V0);
void setup() {
Serial.begin(115200);
Blynk.begin(token, ssid, pass);
lcd.init();
lcd.backlight();
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
myservo1.attach(12);
myservo1.write(100);
lcd.setCursor (0,0);
lcd.print(boot);
lcd.setCursor (0,1);
lcd.print(boot2);
lcd2.clear();
lcd2.print(0,0,boot);
lcd2.print(0,1,boot2);
// Blynk.virtualWrite(V0,boot);
// Blynk.virtualWrite(V1,boot2);
delay (2000);
lcd.clear();
}
void loop(){
Blynk.run();
if(digitalRead (IR1) == LOW && flag1==0){
if(Slot>0){
flag1=1;
if(flag2==0){
myservo1.write(0);
Slot = Slot-1;
}
}else{
lcd.setCursor (0,0);
lcd.print(prk);
lcd.setCursor (0,1);
lcd.print(prk2);
lcd2.print(0,0,prk);
lcd2.print(0,1,prk2);
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(slot);
lcd.setCursor (0,1);
lcd.print(slot2);
lcd.print(Slot);
lcd2.print(0,0,slot);
lcd2.print(0,1,slot2);
lcd2.print(15,1,Slot);
// Blynk.virtualWrite(V0,slot);
// Blynk.virtualWrite(V1,slot2);
}