#include <Wire.h>#include <LiquidCrystal_I2C.h>
// Konfigurasi LCD I2C 16x2LiquidCrystal_I2C lcd(0x27, 16, 2);
// Konfigurasi pinconst int trigPin = 8; // Ultrasonic TRIGconst int echoPin = 9; // Ultrasonic ECHOconst int buzzer = 7; // Buzzerconst int potPin = A2; // Potensiometer
// Variabel sensorlong duration;int distance;int setPoint; // Ambang jarak dari potensiometer
void setup() { // Inisialisasi pin pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(buzzer, OUTPUT);
// Inisialisasi LCD lcd.init(); lcd.backlight();
// Tampilan awal lcd.setCursor(0,0); lcd.print("Meteran Digital"); lcd.setCursor(0,1); lcd.print("Siap Mengukur..."); delay(2000); lcd.clear();}
void loop() { // Membaca set point dari potensiometer int potValue = analogRead(potPin); setPoint = map(potValue, 0, 1023, 0, 200); // Maks jarak 200 cm
// Mengirim pulsa ultrasonik digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
// Membaca durasi pulsa duration = pulseIn(echoPin, HIGH);
// Menghitung jarak dalam cm distance = duration * 0.034 / 2;
// Menampilkan data di LCD lcd.setCursor(0,0); lcd.print("Jarak: "); lcd.print(distance); lcd.print(" cm ");
lcd.setCursor(0,1); lcd.print("Set Pt: "); lcd.print(setPoint); lcd.print(" cm ");
// Logika buzzer: aktif jika jarak sama persis dengan set point if(distance == setPoint){ digitalWrite(buzzer, HIGH); delay(50); digitalWrite(buzzer, LOW); } else { digitalWrite(buzzer, LOW); }
delay(200); // Refresh sensor dan LCD setiap 200 ms}