#include <LiquidCrystal.h>
const int RS = 23, EN = 22, D4 = 21, D5 = 19, D6 = 18, D7 = 5;
const int TRIG_PIN = 17;
const int ECHO_PIN = 16;
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
// 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.begin(16, 2);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
showSplash();
}
void loop() {
int distance = getDistance();
printRange(distance);
delay(1000);
}