Hola, estaba probando un encoder rotatorio con una pantalla lcd i2c para hacer un menu mas profesional, pero no se porque la variable contador me cuenta de dos en dos y no encuentro la forma de evitarlo o compensarlo, a ver si alguien me puede ayudar.
Lo estaba probando en un arduino uno.
#define clk 8
#define data 9
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //
int Contador = 100;
int Estado;
int EstadoAnt;
void setup() {
pinMode (clk,INPUT);
pinMode (data,INPUT);
Serial.begin (9600);
EstadoAnt = digitalRead(clk);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Posicion");
}
void loop() {
Estado = digitalRead(clk);
if (Estado != EstadoAnt){
Serial.print("CLK: ");
Serial.print(Estado);
Serial.print(" DATA: ");
Serial.print(digitalRead(data));
if (digitalRead(data) != Estado) {
Contador --;
Serial.print(" - ");
} else {
Contador ++;
Serial.print(" + ");
}
Serial.print(" Position: ");
Serial.println(Contador);
}
lcd.setCursor(0, 1);
lcd.print(Contador);
EstadoAnt = Estado;
}