#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Initialize the LCD with I2C address 0x27 (common for many I2C LCDs)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// Initialize the LCD
lcd.init();
lcd.backlight(); // Turn on the backlight
// Display text
lcd.setCursor(0, 0);
lcd.print("");
lcd.setCursor(0, 1);
lcd.print("LCD I2C Working!");
}
void loop() {
// Scroll text as an example
lcd.setCursor(0, 1);
lcd.print(" WATER LEVEL! ");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("ESP32 + LCD ");
delay(1000);
}
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>
// LCD setup
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adjust the I2C address if necessary
// HC-SR04 setup
const int trigPin = 5;
const int echoPin = 18;
const int maxDistance = 200; // Maximum distance to measure (in cm)
NewPing sonar(trigPin, echoPin, maxDistance);
// Buzzer and LED setup
const int buzzerPin = 23;
const int ledPin = 19;
void setup() {
// Initialize LCD
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Distance:");
// Initialize Buzzer and LED
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
}
void loop() {
delay(50); // Wait for sensor to stabilize
unsigned int uS = sonar.ping();
float distance = uS / US_ROUNDTRIP_CM;
// Display distance on LCD
lcd.setCursor(0, 1);
lcd.print(" "); // Clear previous readings
lcd.setCursor(0, 1);
lcd.print(distance);
lcd.print(" cm");
// Control Buzzer and LED based on distance
if (distance < 10) {
digitalWrite(buzzerPin, HIGH);
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin, LOW);
}
delay(500); // Update every 500 milliseconds
}