#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// Constants won't change
const int TRIG_PIN = 6; // Arduino pin connected to Ultrasonic Sensor's TRIG pin
const int ECHO_PIN = 7; // Arduino pin connected to Ultrasonic Sensor's ECHO pin
const int LED_PIN = 13; // Arduino pin connected to LED's pin
const int DISTANCE_THRESHOLD = 5; // centimeters
// Variables will change:
float duration_us, distance_cm;
void setup() {
Serial.begin(9600); // Initialize serial port
pinMode(TRIG_PIN, OUTPUT); // Set Arduino pin to output mode
pinMode(ECHO_PIN, INPUT); // Set Arduino pin to input mode
pinMode(LED_PIN, OUTPUT); // Set Arduino pin to output mode
// Initialize the LCD
lcd.init(); // initialize the lcd
lcd.backlight(); // Turn on the LCD screen backlight
lcd.print("Distance Sensor");
}
void loop() {
// Generate 10-microsecond pulse to TRIG pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Measure duration of pulse from ECHO pin
duration_us = pulseIn(ECHO_PIN, HIGH);
// Calculate the distance
distance_cm = 0.017 * duration_us;
// Control the LED based on distance
if (distance_cm < DISTANCE_THRESHOLD)
digitalWrite(LED_PIN, HIGH); // Turn on LED
else
digitalWrite(LED_PIN, LOW); // Turn off LED
// Print the value to Serial Monitor
Serial.print("Distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
// Update the LCD display with the distance
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance(in cm)");
lcd.setCursor(5,1);
lcd.print(distance_cm);
//lcd.print(" cm");
delay(500);
}