#define PIN_TRIGL 10
#define PIN_ECHOL 9
#define LED_L 11
#define PIN_TRIGR 8
#define PIN_ECHOR 7
#define LED_R 6
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
int parkings = 0;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED_R,OUTPUT);
pinMode(LED_L,OUTPUT);
pinMode(PIN_TRIGL, OUTPUT);
pinMode(PIN_ECHOL, INPUT);
pinMode(PIN_TRIGR, OUTPUT);
pinMode(PIN_ECHOR, INPUT);
lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(0, 0);
lcd.print("Smart Parking");
lcd.setCursor(3, 1);
lcd.print("System");
delay(1000);
}
int LeftOn = 0;
int RightOn = 0;
int status = 0;
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(PIN_TRIGL, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIGL, LOW);
// Read the result:
int duration1 = pulseIn(PIN_ECHOL, HIGH);
int cm1 = duration1 / 58;
digitalWrite(PIN_TRIGR, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIGR, LOW);
int duration2 = pulseIn(PIN_ECHOR, HIGH);
int cm2 = duration2 / 58;
Serial.print("Distance in CM on Left Sensor: ");
Serial.println(cm1);
Serial.print("Distance in CM on Right Sensor: ");
Serial.println(cm2);
if (cm1 < 100){
digitalWrite(LED_L,1);
if (LeftOn==0){
parkings += 1;
LeftOn = 1;
}
}
else {
digitalWrite(LED_L,0);
if (LeftOn==1){
parkings -= 1;
LeftOn = 0;
}
}
if (cm2 < 100){
digitalWrite(LED_R,1);
if (RightOn==0){
parkings += 1;
RightOn = 1;
}
}
else {
digitalWrite(LED_R,0);
if (RightOn==1){
parkings -= 1;
RightOn = 0;
}
}
if (LeftOn == 0 && RightOn == 0){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Empty Parking.");
status = 0;
}
else {
lcd.clear();
if (LeftOn == 0){
lcd.setCursor(0, 0);
lcd.print("L_Parking Free");
}
else if (RightOn == 0){
lcd.setCursor(0, 0);
lcd.print("R_Parking Free");
}
// if (status == 0){
// lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Total Parkings:");
lcd.print((parkings));
delay(200);
// status = 1;
// }
}
}