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

const int holdButtonPin = 2;  // Pin untuk tombol "hold"
const int resetButtonPin = 3; // Pin untuk tombol reset
LiquidCrystal_I2C lcd(0x27, 16, 2);  // Alamat I2C untuk LCD

int measuredValue = 0;   // Nilai yang diukur
int holdValue = 0;       // Nilai yang akan ditahan
bool isHoldActive = false;  // Status "hold" aktif atau tidak
int a = 0;

void setup() {
  pinMode(holdButtonPin, INPUT);
  pinMode(resetButtonPin, INPUT);
  lcd.init();  // Inisialisasi LCD
  lcd.backlight();  // Aktifkan pencahayaan belakang LCD
}

void loop() {
  // Baca tombol "hold"
  int holdButtonState = digitalRead(holdButtonPin);

  if (holdButtonState == HIGH) {
    // Tombol "hold" ditekan
    holdValue = measuredValue;  // Simpan nilai yang akan ditampilkan
    isHoldActive = true;
  }

  // Baca tombol reset
  int resetButtonState = digitalRead(resetButtonPin);

  if (resetButtonState == HIGH) {
    // Tombol reset ditekan
    measuredValue = 0;  // Reset nilai yang diukur
    a = 0;  // Reset variabel a
    isHoldActive = false; // Nonaktifkan "hold"
  }

  // Simulasikan pengukuran nilai (misalnya, dari sensor)
  a++;  // Tambah 1 ke variabel a
  measuredValue = a;

  // Tampilkan nilai di LCD
  lcd.clear();
  lcd.setCursor(0, 0);

  lcd.setCursor(0, 1);
  if (isHoldActive) {
    lcd.print("HOLD: ");
    lcd.print(holdValue);
  } else {
    lcd.print("Value: ");
    lcd.print(measuredValue);
  }

  delay(100);
}