#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
int trigpin = 12 ;
int echopin = 11 ;
long duration, cm, inches;
int ledred=8;
int ledyellow=5;
int ledgreen=3;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(ledred, OUTPUT);
digitalWrite(ledred, LOW);
pinMode(ledyellow, OUTPUT);
digitalWrite(ledyellow, LOW);
pinMode(ledgreen, OUTPUT);
digitalWrite(ledgreen, LOW);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trigpin, LOW);
delayMicroseconds(0);
digitalWrite(trigpin, HIGH);
delayMicroseconds(0);
digitalWrite(trigpin, LOW);
pinMode(echopin, INPUT);
duration = pulseIn(echopin, HIGH);
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
lcd.setCursor (1,0);
lcd.print ("cm : ");
lcd.setCursor(5,0);
lcd.print (cm);
lcd.setCursor (1,1);
lcd.print ("in : ");
lcd.setCursor(5,1);
lcd.print (inches);
if (cm < 30) {
digitalWrite(ledred, HIGH);
delay(100);
digitalWrite(ledred, LOW);
delay(100);
}
if (cm > 30 && cm < 50) {
digitalWrite(ledyellow, HIGH);
delay(100);
digitalWrite(ledyellow, LOW);
delay(100);
}
if (cm > 50) {
digitalWrite(ledgreen, HIGH);
delay(100);
digitalWrite(ledgreen, LOW);
delay(100);
}
}