#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>
#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define LCD_ADDRESS 0x27
#define LCD_COLUMNS 16
#define LCD_ROWS 2
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS);
NewPing sonar(TRIGGER_PIN, ECHO_PIN);
void setup() {
lcd.begin(LCD_COLUMNS, LCD_ROWS);
lcd.backlight();
lcd.print("Ultrasonic Sensor");
delay(2000);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Distance: ");
int distance = readDistance();
if (distance >= 0) {
lcd.setCursor(0, 1);
lcd.print(distance);
lcd.print(" cm");
} else {
lcd.setCursor(0, 1);
lcd.print("Error");
}
delay(1000);
lcd.clear();
}
int readDistance() {
delay(50);
unsigned int distance = sonar.ping_cm();
if (distance == 0) {
return -1; // Error reading distance
} else {
return distance;
}
}