#include <string>
#include "Encoder.h"
#include <Adafruit_SH110X.h>
#include <Wire.h>
#define ENCODER_CLK 18
#define ENCODER_DT 5
#define ENCODER_SW 19
#define LED 14
Encoder encoder (ENCODER_CLK, ENCODER_DT, ENCODER_SW);
Adafruit_SH1106G display = Adafruit_SH1106G(128, 64, &Wire, -1);
byte op = 0;
void show_menu_LED();
void show_menu_LED ();
void show_menu_DHT ();
void show_menu (int menu, byte op);
void updateDisplay(String txt);
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
display.begin(0x3c, true);
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
updateDisplay("Display On!");
}
void loop() {
encoder.read();
int n = encoder.getN();
// Serial.println(n);
show_menu(1, op);
if (Serial.available()) {
char car = (char)Serial.read();
switch(car) {
case '1': {
show_menu_LED();
op = 0;
break;
}
case '2': {
show_menu_DHT();
break;
}
default: {
updateDisplay("Opcion incorrecta!");
}
}
}
delay(100);
}
void show_menu_LED () {
bool repeat = true;
while (repeat) {
show_menu(2, op);
if (Serial.available()) {
char car = (char)Serial.read();
switch(car) {
case '1':
digitalWrite(LED, HIGH);
break;
case '2':
digitalWrite(LED, LOW);
break;
case '3':
repeat = false;
break;
default:
updateDisplay("Opcion incorrecta!");
}
}
}
}
void show_menu_DHT () {
}
void show_menu (int menu, byte op) {
String options = "";
if(menu == 1) {
options = "1: LED\n2: DHT22\n\nOpcion: " + String(op);
} else if (menu == 2) {
options = "1: Encender\n2: Apagar\n3: Volver\n\n" + String(op);
} else {
options = "1: Leer H y T\n2: Volver\n\n" + String(op);
}
updateDisplay(options);
}
void updateDisplay(String txt) {
display.clearDisplay();
display.setCursor(0, 0);
display.println(txt);
display.display();
}