// --- LIBRARY ---
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// --- KONFIGURASI PIN ---
const byte trigPin = 18;
const byte echoPin = 19;
// --- KONFIGURASI OBJEK ---
// Alamat I2C umumnya 0x27, kadang 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Variabel untuk perhitungan jarak
long durasi;
float jarak_cm;
void setup() {
// Inisialisasi Pin Sensor
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Pesan Pembuka
lcd.setCursor(0, 0);
lcd.print("Penggaris ESP32");
lcd.setCursor(0, 1);
lcd.print("Memulai...");
delay(2000); // Tahan layar 2 detik
lcd.clear();
}
void loop() {
// 1. Membersihkan pin Trig sebelum menembak
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// 2. Menembakkan sinyal ultrasonik selama 10 mikrodetik
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 3. Membaca waktu pantulan sinyal (Echo)
durasi = pulseIn(echoPin, HIGH);
// 4. Menghitung Jarak
// Kecepatan suara = 340 m/s atau 0.034 cm/mikrodetik
// Dibagi 2 karena sinyal bolak-balik (pergi dan pulang)
jarak_cm = (durasi * 0.034) / 2;
// 5. Tampilkan ke LCD I2C
lcd.setCursor(0, 0);
lcd.print("Jarak Benda:");
lcd.setCursor(0, 1);
lcd.print(jarak_cm);
lcd.print(" cm "); // Spasi ekstra untuk menghapus sisa angka lama
// Jeda pembacaan agar layar tidak berkedip terlalu cepat
delay(1000);
}