#include <Arduino.h>
#include <RotaryEncoder.h>
#include <LiquidCrystal_I2C.h>
#define PIN_IN1 3
#define PIN_IN2 2
int newPosition, oldPosition, position;
unsigned int amount;
LiquidCrystal_I2C lcd(0x27, 16, 2);
RotaryEncoder encoder(PIN_IN1, PIN_IN2, RotaryEncoder::LatchMode::FOUR3);
void checkPosition()
{
encoder.tick();
newPosition = encoder.getPosition();
}
void setup()
{
lcd.init();
lcd.clear();
lcd.backlight();
lcd.print("PollRotatorLCD");
attachInterrupt(digitalPinToInterrupt(PIN_IN1), checkPosition, CHANGE);
attachInterrupt(digitalPinToInterrupt(PIN_IN2), checkPosition, CHANGE);
}
void loop()
{
if (newPosition != oldPosition) {
oldPosition = newPosition;
position = position + newPosition;
encoder.setPosition(0);
newPosition = 0;
if (position < 0) {
position = 0;
}
amount = position * 1000;
lcd.setCursor(0, 1);
lcd.print(amount);
lcd.print(" ");
}
}