#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
const int trigPin = 8;
const int echoPin = 9;
const int buzzer = 13;
long duration;
int distanceCm;
int maxDistance = 100;
int redLEDPin = 10;
int greenLEDPin = 6;
int blueLEDPin = 7;
int red = 0;
int blue = 0;
int green = 0;
void setup()
{
lcd.begin(16,2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
}
void loop()
{
//Initialization of Ultrasonic sensor and distance calculation.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * 0.034 / 2;
// RGB LED changes color from green to red if the distance is lower than 25.
if(distanceCm<25)
{
green=0;
red=255;
}
else
{
red=0;
green=255;
}
analogWrite(redLEDPin, red);
analogWrite(greenLEDPin, green);
analogWrite(blueLEDPin, blue);
delay(10);
//Buzzer tones at different distances
if(distanceCm < 10)
{
tone(buzzer,480);
delay(15);
noTone(buzzer);
}
else if(distanceCm <= 20)
{
tone(buzzer,480);
delay(50);
noTone(buzzer);
}
else if(distanceCm <= 30)
{
tone(buzzer,480);
delay(100);
noTone(buzzer);
}
//Display values to LCD
lcd.setCursor(0,0);
delay(150);
if(distanceCm>maxDistance)
{
distanceCm = 0;
}
lcd.print("Distance: ");
lcd.setCursor(10,0);
if(distanceCm != 0)
{
lcd.print(distanceCm);
lcd.println(" cm ");
}
else
{
lcd.print("--- ");
}
lcd.setCursor(0,1);
lcd.print("Max dist: ");
lcd.print(maxDistance);
lcd.print(" cm ");
delay(10);
}