#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
#define trig 12
#define echo 11
#define red 2
#define yellow 3
#define green 4
#define buzz 5
long duration;
int distance;
int frequency;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
pinMode(buzz, OUTPUT);
lcd.setCursor (1, 0);
lcd.print ("Distance:");
}
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = (duration * 0.034)/2;
frequency = map(distance, 2, 200, 2000, 200);
tone(buzz, frequency);
if (distance >= 150) {
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
} else if (distance >= 75) {
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
} else {
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
}
lcd.setCursor (11, 0);
lcd.print (distance);
}