#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD address to 0x27 for a 16x2 display
const int trigPin = 2; // D2 on NodeMCU
const int echoPin = 15; // D4 on NodeMCU
const int buzzerPin = 5; // D13 on NodeMCU
void setup() {
lcd.init();
lcd.backlight();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
lcd.print("Distance: ");
lcd.setCursor(0, 1);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1; // Calculate distance in cm
lcd.setCursor(10, 0);
lcd.print(" "); // Clear previous distance
lcd.setCursor(10, 0);
lcd.print(distance);
lcd.print(" cm");
if (distance < 10) {
digitalWrite(buzzerPin, HIGH); // Turn on the buzzer
lcd.setCursor(0, 1);
lcd.print("Side"); // Display "Side" when distance is less than 10 cm
} else {
digitalWrite(buzzerPin, LOW); // Turn off the buzzer
lcd.setCursor(0, 1);
lcd.print("Go"); // Display "Go" when distance is 10 cm or more
}
delay(100);
}