#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD(0x27, 16, 2); // Inisialisasi LCD dengan alamat 0x27 (pastikan alamat benar)
// Pin untuk sensor ultrasonik
#define TRIG_PIN 26 // Pin TRIG sensor ultrasonik
#define ECHO_PIN 25 // Pin ECHO sensor ultrasonik
#define LED_PIN 21 // Pin LED
// Ambang batas jarak (dalam cm)
#define DISTANCE_THRESHOLD 50
// Variabel untuk menghitung jarak
float duration_us, distance_cm;
void setup() {
Serial.begin(115200); // Inisialisasi serial monitor untuk debugging
// Inisialisasi pin
pinMode(TRIG_PIN, OUTPUT); // Set pin TRIG sebagai output
pinMode(ECHO_PIN, INPUT); // Set pin ECHO sebagai input
pinMode(LED_PIN, OUTPUT); // Set pin LED sebagai output
}
void loop() {
// Menghasilkan pulsa 10 mikrodetik ke pin TRIG
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Mengukur durasi pulsa dari pin ECHO
duration_us = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak berdasarkan durasi
distance_cm = 0.017 * duration_us;
// Membersihkan layar LCD untuk menampilkan data terbaru
LCD.clear(); // Membersihkan seluruh tampilan LCD
// Menampilkan jarak pada LCD
LCD.init();
LCD.backlight();
LCD.setCursor(7, 0); // Memindahkan kursor ke posisi setelah "Jarak: "
LCD.print(distance_cm);
LCD.print(" cm"); // Menampilkan jarak dalam cm
// Memeriksa apakah jarak lebih kecil dari ambang batas dan mengendalikan LED
if (distance_cm < DISTANCE_THRESHOLD) {
digitalWrite(LED_PIN, HIGH); // Menyalakan LED untuk objek yang dekat
LCD.setCursor(0, 1); // Memindahkan kursor ke baris kedua
LCD.print("Objek Dekat"); // Menampilkan pesan objek dekat
} else {
digitalWrite(LED_PIN, LOW); // Mematikan LED untuk objek yang jauh
LCD.setCursor(0, 1); // Memindahkan kursor ke baris kedua
LCD.print("Objek Jauh"); // Menampilkan pesan objek jauh
}
// Menampilkan jarak ke Serial Monitor untuk debugging
Serial.print("Jarak: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(500); // Menunggu selama 500 ms sebelum pengukuran berikutnya
}