// Import the required library to setup the LCD
#include <LiquidCrystal_I2C.h>
#define TRIG_PIN 18
#define ECHO_PIN 19
#define RED_LED 32
#define GREEN_LED 33
// Setup the LCD
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
// Initilize the display and display the intial message
LCD.init();
LCD.backlight();
LCD.setCursor(1, 0);
LCD.print("PARKING");
LCD.setCursor(1, 1);
LCD.print("ASSISTANT");
delay(1000);
LCD.clear();
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration * 0.034 / 2;
if(distance > 50){
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
}else{
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
}
// Display the distance
LCD.setCursor(1, 0);
LCD.print("Distance in CM");
LCD.setCursor(7, 1);
LCD.print(distance);
// Wait for a moment before the next reading
delay(200);
}