#define CLK 5
#define DT 2
#define SW 15
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27,16,2);
int contador = 0;
int estadoAtualCLK;
int estadoAnteriorCLK;
int estadoBotao;
String Rotacao = "";
unsigned long ultimoPressBotao = 0;
void setup() {
Serial.begin(9600);
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT_PULLUP);
lcd.init();
lcd.backlight();
}
void loop(){
estadoAtualCLK = digitalRead(CLK);
if (estadoAtualCLK != estadoAnteriorCLK && estadoAtualCLK == 1)
{
if (digitalRead(DT) != estadoAtualCLK) {
contador++;
Rotacao = "SEN HOR";
}
else {
contador--;
Rotacao = "SEN ANT";
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DIRECAO: ");
lcd.print(Rotacao);
lcd.print(Rotacao);
lcd.setCursor(2,1);
lcd.print("CONTADOR: ");
lcd.print(contador);
}
estadoAnteriorCLK = estadoAtualCLK;
estadoBotao = digitalRead(SW);
if (estadoBotao == LOW) {
if (millis() - ultimoPressBotao > 50) {
Serial.println("BOTAO PRESSIONADO..");
}
ultimoPressBotao = millis();
}
delay(1);
}