#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define LED_Merah 13
#define LED_Kuning 12
#define LED_Hijau 11
#define ENCODER_CLK 2
#define ENCODER_DT 3
#define ENCODER_SW 4
int counter = 0;
//-------------------------------------------------------------------------------
void setup(){
lcd.init();
lcd.backlight();
pinMode(LED_Merah, OUTPUT);
pinMode(LED_Kuning, OUTPUT);
pinMode(LED_Hijau, OUTPUT);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING);
}
void loop(){
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Counter: ");
lcd.print(counter);
lcd.print(" ");
if (counter == 1){
digitalWrite(LED_Merah, HIGH);
digitalWrite(LED_Kuning, LOW);
digitalWrite(LED_Hijau, LOW);
}
else if(counter == 2){
digitalWrite(LED_Merah, LOW);
digitalWrite(LED_Kuning, HIGH);
digitalWrite(LED_Hijau, LOW);
}
else if(counter == 3){
digitalWrite(LED_Merah, LOW);
digitalWrite(LED_Kuning, LOW);
digitalWrite(LED_Hijau, HIGH);
}
else {
digitalWrite(LED_Merah, LOW);
digitalWrite(LED_Kuning, LOW);
digitalWrite(LED_Hijau, LOW);
}
delay(50);
}
void readEncoder(){
int dtValue = digitalRead(ENCODER_DT);
if (dtValue == HIGH) {
counter++; // Clockwise
}
if (dtValue == LOW) {
counter--; // Counterclockwise
}
}