#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD I2C Address (Use 0x27 or 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Ultrasonic Sensor Pins
#define TRIG_PIN 2
#define ECHO_PIN 3
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Wire.begin(6, 7); // Explicitly initialize I2C on ESP32-C3 Xiao (SDA=6, SCL=7)
lcd.init(); // Use init() instead of begin() for Wokwi
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Distance Sensor");
delay(1000);
lcd.clear();
}
void loop() {
// Send a 10-microsecond pulse to trigger the sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Read the echo pin and calculate distance
long duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration * 0.0343 / 2; // Convert to cm
// Display on LCD
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm "); // Clear old values with spaces
delay(500);
}