#include <Adafruit_SH110X.h>
#include <Wire.h>
#include <DHT.h>
const byte LED = 12;
const byte PIN_SENSOR = 27;
Adafruit_SH1106G display = Adafruit_SH1106G(128, 64, &Wire, -1); //Inicializar el OLED
DHT sensor(PIN_SENSOR, DHT22); //Inicializar el sensor de temperatura
void setup() {
Serial.begin(9600);
Serial.println("Hello, ESP32!");
pinMode(LED, OUTPUT);
//Setear OLED
display.begin(0x3c, true);
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
updateDisplay("Display On!!");
//Setear sensor
sensor.begin();
float temp = sensor.readTemperature();
float hum = sensor.readHumidity();
updateDisplaySensor(temp, hum);
}
void loop() {
//Procesar LED
if (Serial.available()) {
String cmd = "";
// Leer todo lo disponible en el puerto serie
while (Serial.available()) {
cmd += (char)Serial.read();
delay(10); // Pequeño retraso para permitir que lleguen todos los caracteres
}
// Depuración: mostrar el comando recibido en el monitor serie
Serial.println("Command received: " + cmd);
// Quitar posibles caracteres de nueva línea o retorno de carro
cmd.trim();
// Verificar si el comando es "ON" o "OFF"
if (cmd == "ON") {
digitalWrite(LED, HIGH);
Serial.println("LED ON");
updateDisplay("LED was turned ON!");
} else if (cmd == "OFF") {
digitalWrite(LED, LOW);
Serial.println("LED OFF");
updateDisplay("LED was turned OFF!");
}
}
//Procesar Sensor de temperatura
}
void updateDisplay(String txt){
display.clearDisplay();
display.setCursor(0,0);
display.println(txt);
display.display();
}
void updateDisplaySensor(float t, float h){
display.clearDisplay();
display.setCursor(0,0);
display.printf("Temp: %.1f\nHum: %.2f", t, h); //String formateado
display.display();
}