#include <LiquidCrystal_I2C.h>
#define piezoPin 3
#define trigPin 9
#define echoPin 10
#define redPin 11
#define greenPin 12
#define bluePin 13
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(piezoPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Dist: ");
lcd.print(distance);
lcd.print(" cm");
float distanceInInches = distance / 2.54;
lcd.setCursor(0,1);
lcd.print("Dist: ");
lcd.print(distanceInInches);
lcd.print(" in");
if (distance > 100) {
tone(piezoPin, 600);
delay(1000);
noTone(piezoPin);
}
if (distance < 30) {
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, LOW);
digitalWrite(bluePin, LOW);
} else if (distance >= 30 && distance < 70) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
} else {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
}
delay(500);
}