#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define merah 10
#define biru 11
#define kuning 12
LiquidCrystal_I2C lcd('I2_ADDR', LCD_COLUMNS, LCD_LINES);
long bacaJarak (int triggerPin, int echoPin)
{
pinMode(merah, OUTPUT);
pinMode(biru, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
digitalWrite(7, HIGH);
delayMicroseconds(10);
digitalWrite(7, LOW);
pinMode(8, INPUT);
return pulseIn(8, HIGH);
}
void setup()
{
Serial. begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Sensor Jarak");
delay(1000);
lcd.clear();
}
void loop()
{
int cm = 0;
cm = (0, 03446 * bacaJarak(38, 40))/2;
lcd.clear();
lcd.print("Jarak Benda");
lcd.setCursor(0,1);
lcd.print("= ");
Serial.print(cm);
Serial.println("cm");
lcd.print(cm);
lcd.print(" cm");
lcd.setCursor(0,1);
if(cm < 5)
{
digitalWrite(merah, HIGH);
digitalWrite(biru, LOW);
digitalWrite(kuning, LOW);
} else if(cm >= 5 && cm <=15)
{
digitalWrite(biru, HIGH);
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
} else if(cm > 15)
{
digitalWrite(kuning, HIGH);
digitalWrite(biru, LOW);
digitalWrite(merah, LOW);
}
delay(1000);
}