#include <LiquidCrystal_I2C.h>
// set the LCD number of columns and rows
const int lcdColumns = 16;
const int lcdRows = 2;
// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
// Indicator LEDs
const int ledPinRed = 12;
const int ledPinGreen = 13;
// Ultra Sonic Sensor Pin
const int trigPin = 5;
const int echoPin = 18;
//define sound speed in cm/uS
#define SOUND_SPEED 0.034
long duration;
int distanceCm;
void setup() {
// LED Setup
pinMode (ledPinRed, OUTPUT);
pinMode (ledPinGreen, OUTPUT);
// initialize LCD
lcd.init();
lcd.backlight(); // turn on LCD backlight
// Ultra Sonic Sensor
Serial.begin(115200); // Starts the serial communication
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}
void loop() {
// Ultra Sonic Sensor
digitalWrite(trigPin, LOW); // Clears the trigPin
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Sets the trigPin on HIGH state for 10 micro seconds
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Clears the trigPin
// Reads Ultrasonic Sensor
duration = pulseIn(echoPin, HIGH);
distanceCm = (int) duration * SOUND_SPEED/2; // Calculate the distance
// LED Indication based on distance
if(distanceCm >= 200) { // Adjust threshold based on sensor range
digitalWrite (ledPinRed, LOW);
digitalWrite (ledPinGreen, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Present");
} else {
digitalWrite (ledPinRed, HIGH);
digitalWrite (ledPinGreen, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Not Present");
}
delay(1000);
}