#include <LiquidCrystal_I2C.h>
const int TRIG_PIN = 19;
const int ECHO_PIN = 18;
LiquidCrystal_I2C lcd(0x27, 16, 2);
// function to measure distance
int getDistance() {
// send trigger pulse
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// read pulse duration
long duration = pulseIn(ECHO_PIN, HIGH);
// calculate distance
long distance = duration * 0.0343 / 2;
return (int)distance + 0.5;
}
void printRange(int range) {
lcd.setCursor(2, 0);
lcd.print("Range:");
lcd.setCursor(6, 1);
lcd.print(range);
lcd.print(" cm ");
}
void showSplash() {
lcd.setCursor(2, 0);
lcd.print("HC-SR04 Demo");
lcd.setCursor(6, 1);
lcd.print("V1.0");
delay(2000);
lcd.clear();
Serial.println("\nHC-SR04 Demo");
}
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
showSplash();
}
void loop() {
int distance = getDistance();
printRange(distance);
delay(1000);
}