#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Inisialisasi LCD 1602 I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Definisi pin sensor Ultrasonik HCSR04
const int trigPin = 9;
const int echoPin = 10;
const int pinTombol = 11;
bool Tanda;

void setup() {
  // Inisialisasi Serial Monitor
  Serial.begin(9600);

  // Inisialisasi LCD
  lcd.begin(16, 2);
  lcd.backlight();

  // Inisialisasi pin sensor Ultrasonik
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(pinTombol, INPUT_PULLUP);
}

void loop() {
  int tombol = digitalRead(pinTombol); //tekan tombol
  if(tombol == LOW){Tanda = true; lcd.clear();} //membandingakan tombol ditekan atau tidak
  if(Tanda == false) {
    lcd.setCursor(0,0);
    lcd.print("PROJEK PENGGARIS DIGITAL");
    lcd.scrollDisplayLeft();
    delay(100);
  }else{
  // Variabel untuk menyimpan hasil pengukuran jarak
    long distance;

    // Kirim sinyal ultrasonik
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    // Tambahkan delay sebelum membaca echo
    delayMicroseconds(10);

    // Baca durasi pulsa ultrasonik
    unsigned long duration = pulseIn(echoPin, HIGH);

    // Hitung jarak berdasarkan durasi pulsa
    distance = (duration * 0.034) / 2;

    // Tampilkan hasil pengukuran pada Serial Monitor
    Serial.print("Jarak: ");
    Serial.print(distance);
    Serial.println(" cm");

    // Tampilkan hasil pengukuran pada LCD
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Jarak:");
    lcd.setCursor(7, 0);
    lcd.print(distance);
    lcd.setCursor(12, 0);
    lcd.print("cm");

    // Tunggu sejenak sebelum melakukan pengukuran selanjutnya
    delay(100);
  }
}
$abcdeabcde151015202530fghijfghij