#define EchoPin 9 // Mendefinisikan pin untuk menerima sinyal pantul (echo)
#define TrigPin 8 // Mendefinisikan pin untuk mengirim sinyal ultrasonik (trigger)
#define LED1 7 // Mendefinisikan pin untuk LED
long waktu; // Variabel untuk menyimpan waktu perjalanan sinyal ultrasonik
int jarak; // Variabel untuk menyimpan jarak yang diukur
#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); // Inisialisasi LCD dengan alamat 0x27, 16 kolom, dan 2 baris
void setup() {
pinMode(EchoPin, INPUT); // Mengatur pin echo sebagai input
pinMode(TrigPin, OUTPUT); // Mengatur pin trigger sebagai output
pinMode(LED1, OUTPUT); // Mengatur pin LED sebagai output
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Menyalakan backlight LCD
lcd.setCursor(0,0); // Mengatur kursor di kolom 0, baris 0
lcd.print("ultrasonik"); // Menampilkan teks "ultrasonik"
lcd.setCursor(0,1); // Mengatur kursor di kolom 0, baris 1
lcd.print("jarak= "); // Menampilkan teks "jarak= "
}
void loop() {
digitalWrite(TrigPin, LOW); // Mengirimkan sinyal LOW ke pin trigger
delayMicroseconds(2); // Menunggu 2 mikrodetik
digitalWrite(TrigPin, HIGH); // Mengirimkan sinyal HIGH ke pin trigger
delayMicroseconds(10); // Menunggu 10 mikrodetik
digitalWrite(TrigPin, LOW); // Mengirimkan sinyal LOW ke pin trigger
waktu = pulseIn(EchoPin, HIGH); // Mengukur waktu perjalanan sinyal echo
jarak = waktu * 0.034 / 2; // Menghitung jarak berdasarkan waktu perjalanan (dalam satuan yang tidak disebutkan)
Serial.print("jarak="); // Mengirimkan teks "jarak=" ke Serial Monitor
Serial.println(jarak); // Mengirimkan nilai jarak ke Serial Monitor
delay(200); // Delay 200 milidetik
lcd.setCursor(8, 1); // Mengatur kursor di kolom 8, baris 1
lcd.print(jarak); // Menampilkan nilai jarak di LCD
if (jarak <= 250) { // Jika jarak kurang dari atau sama dengan 250 (dalam satuan yang tidak disebutkan)
digitalWrite(LED1, HIGH); // Mengaktifkan LED
} else {
digitalWrite(LED1, LOW); // Mematikan LED
}
}