#define BLYNK_TEMPLATE_ID "TMPL63HgQ79QU"
#define BLYNK_TEMPLATE_NAME "Esp"
#define BLYNK_AUTH_TOKEN "jAW4yTuw7kYvUMSGlAfh0d2SXNU8W9Zr"
#include <ESP32Servo.h>
#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
Servo servo1;
#define ldrPin1 34 // LDR sensor pin for parking space 1
#define ldrPin2 35 // LDR sensor pin for parking space 2
#define ldrPin3 33 // LDR sensor pin for parking space 3
#define ldrPin4 32 // LDR sensor pin for parking space 4
#define servoPin 13 // Servo motor pin
#define ledPin 12 // LED pin
BLYNK_CONNECTED() {
Blynk.syncVirtual(V1);
Blynk.syncVirtual(V2);
Blynk.syncVirtual(V3);
Blynk.syncVirtual(V4);
}
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
// Address 0x27 for I2C
Servo myservo;
boolean full = 0;
BLYNK_WRITE(V4){
int Val = param.asInt();
Serial.print("V4:");
Serial.print(Val);
if(Val)
{
myservo.write(90);
delay(1000);
}
else
{
myservo.write(0);
delay(1000);
}
}
void setup() {
Serial.begin(9600);
pinMode(ldrPin1, INPUT);
pinMode(ldrPin2, INPUT);
pinMode(ldrPin3, INPUT);
pinMode(ldrPin4, INPUT);
pinMode(ledPin, OUTPUT);
myservo.attach(servoPin);
// initialize OLED display with I2C address 0x3C
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
delay(2000); // wait two seconds for initializing
oled.clearDisplay(); // clear display
oled.setTextSize(1); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 2); // set position to display (x,y)
oled.println("Welcome to Smart Parking"); // set text
oled.display(); // display on OLED
delay(1000);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
boolean EntanceIR = digitalRead(ldrPin1);
boolean ExitIR = digitalRead(ldrPin2);
boolean ldrValue1 = digitalRead(ldrPin3);
boolean ldrValue2 = digitalRead(ldrPin4);
Blynk.virtualWrite(V1, int(ldrValue1)); // Initial value for the slider
Blynk.virtualWrite(V2, int(ldrValue2)); // Initial value for the slider
//V2
if (ldrValue1 && ldrValue2)
{
digitalWrite(ledPin, HIGH);
full = 1;
oled.println("Full! Please come again, Later");}
else
{digitalWrite(ledPin, LOW);
full=0;
oled.println("Empty! Enter and find your slot");
}
if(EntanceIR && ExitIR)
{
// Blynk.virtualWrite(V3, 0); //update button state
myservo.write(0);
}
else
{myservo.write(90);
//V3=1
// Blynk.virtualWrite(v3, 1); //update button state
}
// oled.clear();
// oled.setCursor(0, 0);
// oled.print("LDR1: ");
// oled.print(ldrValue1);
// oled.setCursor(0, 1);
// oled.print("LDR2: ");
// oled.print(ldrValue2);
// oled.setCursor(0, 2);
// oled.print("LDR3: ");
// oled.print(ldrValue3);
// oled.setCursor(0, 3);
// oled.print("LDR4: ");
// oled.print(ldrValue4);
oled.display();
delay(1000);
oled.clearDisplay();
oled.setCursor(0,0);
timer.run();
}