#include <LiquidCrystal_I2C.h>
#include <ezButton.h>
byte clk = 2;
byte dt = 3;
byte sw = 4;
int counter = 0;
int previous_counter = 0;
LiquidCrystal_I2C lcd(0x27,20,4);
ezButton button(sw);
void setup(){
attachInterrupt(digitalPinToInterrupt(clk),encoder,FALLING);
button.setDebounceTime(25);
lcd.init();
lcd.clear();
lcd.backlight();
lcd_print(0,0,"Enter one Number : ");
lcd_print(0,1,String(counter));
}
void encoder(){
previous_counter = counter;
if (digitalRead(dt) == HIGH)counter++;
else counter--;
counter = constrain(counter , 0 , 256);
}
void loop(){
button.loop();
// if button is pressed
if (button.isPressed()){
lcd.clear();
String bin = "Binary : " + String(counter , BIN);
String dec = "Decimal : " + String(counter , DEC);
String hex = "Hexadecimal : " + String(counter , HEX);
lcd_print(0,0,bin);
lcd_print(0,1,dec);
lcd_print(0,2,hex);
}
if (previous_counter != counter){
lcd.clear();
lcd_print(0,0,"Enter a Number : ");
lcd_print(0,1,String(counter));
previous_counter = counter;
}
delay(10);
}
void lcd_print(int x, int y, String message){
lcd.setCursor(x,y);
lcd.print(message);
}