#include <LiquidCrystal.h>
// konstanta untuk mengkonfigurasi LCD
const int LCD_RS = 7;
const int LCD_EN = 6;
const int LCD_D4 = 5;
const int LCD_D5 = 4;
const int LCD_D6 = 3;
const int LCD_D7 = 2;
//konstanta untuk sensor jarak
const int TRIGGER_PIN = 9;
const int ECHO_PIN = 8;
//Maksimum pembacaan sensor (200cm)
const int MEASURE_LIMIT = 400;
//Inisialisasi LC
LiquidCrystal Lcd (LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
void setup() {
//Konfigurasi pin trigger sebagai output
pinMode(TRIGGER_PIN, OUTPUT);
//Konfigurasi pin echo sebagai input
pinMode(ECHO_PIN, INPUT);
//Inisialisasi LCD
Lcd.begin(16,2);
//Tampilkan informasi blog di LCD
Lcd.setCursor (6,0);
Lcd.print ("UJI COBA");
Lcd.setCursor (0,1);
Lcd.print ("XI LISKAP 1");
//Tunggu selama 2 detik
delay(50);
//Bersihkan tampilan LCD
Lcd.clear();
Lcd.setCursor(0,0);
Lcd.print("JARAK = ");
}
void loop() {
//Baca jarak menggunakan sensor ultrasonic
float distance = readSensor();
//Tampilkan jarak di LCD
Lcd.setCursor(8,0);
Lcd.print(distance, 1);
Lcd.println(" CM ");
}
//Fungsi untuk membaca jarak menggunakan sensor ultrasonic
float readSensor() {
//Kirim sinyal trigger ke sensor
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
//Baca sinyal echo yg dikembalikan oleh sensor
float duration = pulseIn(ECHO_PIN, HIGH);
//Hitung jarak dengan menggunakan rumus fisika
float distance = ( duration / 2 ) / 29,1;
//Batasi jarak terukur agar tidak melebihi batas maksimum
distance = constrain(distance, 0, MEASURE_LIMIT);
//Kembalikan nilai jarak yg terukur
return distance;
}