/* LCD_I2C_UltraSonic_distance2.ino
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,4);
const int trigPin = 6;
const int echoPin = 4;
const int redLED = 13;
const int yellowLED = 11;
const int greenLED = 8;
void setup(){
// Initialize serial communication
//Serial.begin(9600);
//LCD setup
lcd.init();
lcd.backlight();
//Ultrasonic & LED setup
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
pinMode (redLED, OUTPUT);
pinMode (yellowLED, OUTPUT);
pinMode (greenLED, OUTPUT);
}
void loop(){
//Send pulse to ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Calculate the duration it takes for pulse to return
long duration = pulseIn(echoPin, HIGH);
//Calculate the distance in cm
int distance = duration * 0.034 / 2;
//Output the distance to the Serial Monitor
//Serial.print("Distance: ");
//Serial.print(distance);
//Serial.println(" cm")
//Lightup LED based on distance
if (distance > 2 && distance <= 50) {
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);}
else if (distance > 50 && distance <= 100 ) {
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);}
else if (distance > 100 && distance <= 150) {
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);}
else if (distance > 150) {
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, HIGH);}
//Display the distance in LCD
lcd.setCursor(0,0); // Set cursor to the first line
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
}