#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define ENCODER_CLK 2
#define ENCODER_DT 3
#define ENCODER_SW 4
int counter = 0;
bool buttonState = false;
bool lastButtonState = false;
void setup() {
lcd.init();
lcd.backlight();
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING);
}
void readEncoder() {
int dtValue = digitalRead(ENCODER_DT);
if (dtValue == HIGH) {
counter++;
}
if (dtValue == LOW) {
counter--;
}
}
void loop() {
// Baca status tombol encoder
buttonState = digitalRead(ENCODER_SW);
// Cek apakah tombol telah ditekan (berubah dari HIGH ke LOW)
if (buttonState == LOW && lastButtonState == HIGH) {
// Reset nilai counter ketika tombol ditekan
counter = 0;
}
// Simpan status tombol saat ini sebagai status terakhir
lastButtonState = buttonState;
// Tampilkan nilai counter di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Counter: ");
lcd.setCursor(0, 1);
lcd.print(counter);
// Delay singkat agar tampilan LCD tidak berkedip terlalu cepat
delay(100);
}