#include <Wire.h>
#include <Adafruit_SH110X.h>
#define ENCODER_CLK 2
#define ENCODER_DT 15
#define C 4
void leerEncoder();
void updateDisplay(String ttx, int opcion);
void updateDisplaySensor(float t, float h);
void updateDisplayPot(float vp);
Adafruit_SH1106G display = Adafruit_SH1106G(128, 64, &Wire, -1); // Pantalla LED
void setup() {
Serial.begin(115200);
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(C, INPUT_PULLUP);
// Inicializar display
display.begin(0x3c, true);
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
}
int lastClk = HIGH;
int contador = 0;
void loop() {
leerEncoder();
display.println(contador);
if(digitalRead (C) == LOW){
contador = 0;
}
}
void leerEncoder(){
int newClk = digitalRead(ENCODER_CLK);
if (newClk != lastClk) {
// There was a change on the CLK pin
lastClk = newClk;
Serial.println(lastClk);
Serial.println(newClk);
int dtValue = digitalRead(ENCODER_DT);
Serial.println(dtValue);
if (newClk == LOW && dtValue == HIGH) {
Serial.println("Rotated clockwise ⏩");
contador ++;
Serial.println(contador);
}
if (newClk == LOW && dtValue == LOW) {
Serial.println("Rotated counterclockwise ⏪");
contador --;
Serial.println(contador);
}
}
}
void updateDisplay(String txt, int opcion)
{
display.clearDisplay();
display.setCursor(0,0);
display.println(txt);
display.printf("\nOpcion: %d", opcion);
display.display();
}
void updateDisplaySensor(float t, float h)
{
display.clearDisplay();
display.setCursor(0,0);
display.printf("Temp.: %.2f\n"
"Hum.: %.2f",t, h);
display.display();
}
void updateDisplayPot(int vp)
{
display.clearDisplay();
display.setCursor(0,0);
display.printf("Potencia: %d", vp);
display.display();
}