#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define ENCODER_CLK 2
#define ENCODER_DF 3
#define ENCODER_SW 4
int counter = 0;
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DF, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING);
}
void readEncoder() {
int dtValue = digitalRead(ENCODER_DF);
if (dtValue == HIGH) {
counter++;
}
if (dtValue == LOW ) {
counter--;
}
}
int getCounter(){
int result;
noInterrupts();
result=counter;
interrupts();
return result;
}
void resetCounter(){
noInterrupts();
counter=0;
interrupts();
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(3,0);
lcd.print("Counter ");
lcd.setCursor(7,1);
lcd.print(getCounter());
}