#include <LiquidCrystal_I2C.h>
//lcd
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
//servo
#include <ESP32Servo.h>
const int servoPin = 13;
Servo servo;
//sensor jarak
#define PIN_TRIG 5
#define PIN_ECHO 18
//int lain
const int Max_pengunjung = 5;
int pengunjung = 0;
bool penambahan_pengunjung = false;
//btn reset
int btn = 14;
void setup() {
Serial.begin(115200);
//lcd
lcd.init();
lcd.backlight();
//servo
servo.attach(servoPin);
//sensor jarak
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(btn, INPUT_PULLUP);
}
void loop() {
//memulai sensor jarak
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
//menghitung jarak
int duration = pulseIn(PIN_ECHO, HIGH);
int jarak = (duration / 58);
int reset = digitalRead(btn);
bool penuh = false;
if (jarak < 30) {
if (pengunjung >= Max_pengunjung){
servo.write(90);
penuh = true;
pengunjung = Max_pengunjung;
delay(1000);
}
if (pengunjung <= Max_pengunjung && !penambahan_pengunjung) {
servo.write(0);
delay(1000);
pengunjung++;
penambahan_pengunjung = true;
penuh = false;
}
} else {
servo.write(90);
delay(1000);
penambahan_pengunjung = false;
}
Serial.println(pengunjung);
delay(100);
printlcd (penuh);
}
void printlcd (bool test1) {
if (bool test1 = true) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("parkiran penuh");
} else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("silahkan masuk");
}
}