#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int trig = 13; //trig di pin 13
int echo = 12; //echo di pin 12
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
Serial.begin(9600); //untuk menampilkan ke serial monitor
pinMode(trig,OUTPUT); //trig sebagai output.
pinMode(echo,INPUT); //echo sebagai input.
lcd.setCursor(0,0); //Mengatur letak tulisan ke LCD
lcd.print("Program HC-SR04"); //Tampilan pada LCD
lcd.setCursor(0,1); //Mengatur letak tulisan ke LCD
lcd.print("Ultrasonik");
delay(1000);
}
void loop()
{
int pulse,cm; //membuat variabel
digitalWrite(trig,LOW); //triger mematikan ultrasonik.
delayMicroseconds(2); //berhenti 2 mikrodetik
digitalWrite(trig, HIGH); //triger menghidupkan ultrasonik.
delayMicroseconds(10); //berhenti 10 mikrodetik
digitalWrite(trig, LOW); //triger mematikan ultrasonik.
pulse = pulseIn(echo, HIGH); //echo menerima pantulan ultrasonik yang menabrak suatu benda dan masuk ke variabel pulse.
cm = (pulse * 0.034 / 2); //rumus untuk menemukan ukuran cm.
Serial.print(" "); //tampilan pada serial monitor
Serial.println(cm); //mengambil data rumus untuk ditampilkan ke serial monitor
lcd.clear(); //Membersihkan charakter yang ada pada lcd
lcd.setCursor(0,0); //mengatur tata letak pada tampilan LCD 16x2
lcd.print("PENGUKURAN"); //tampilan pada LCD 16x2
lcd.setCursor(0,1); //mengatur tata letak pada tampilan LCD 16x2
lcd.print("JARAK :"); //tampilan pada LCD 16x2
lcd.print(cm); //mengambil data rumus untuk ditampilkan ke LCD 16x2
lcd.setCursor(10,1);//mengatur tata letak pada tampilan LCD 16x2
lcd.print("cm"); //tampilan pada LCD 16x2
delay(500); //berhenti 500 milidetik
}