#include <Wire.h> // Incluir librería para la comunicación I2C
#include <Adafruit_GFX.h> // Incluir librería para manejar gráficos en pantallas OLED
#include <Adafruit_SSD1306.h> // Incluir librería para manejar la pantalla OLED SSD1306
#include "DHTesp.h" // Incluir librería para usar el sensor DHT
#define SCREEN_WIDTH 128 // Definir el ancho de la pantalla OLED en píxeles
#define SCREEN_HEIGHT 64 // Definir la altura de la pantalla OLED en píxeles
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Crear objeto OLED con parámetros de tamaño y comunicación I2C
int sensorPin = 26; // Definir el pin donde está conectado el sensor DHT
DHTesp sensor; // Crear objeto para manejar el sensor DHT
void setup() {
sensor.setup(sensorPin, DHTesp::DHT22); // Inicializar el sensor DHT22 en el pin definido
Serial.begin(115200); // Iniciar la comunicación serial a 115200 baudios
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Iniciar la pantalla OLED con dirección I2C 0x3C
oled.clearDisplay(); // Limpiar la pantalla OLED
oled.setTextSize(2); // Establecer el tamaño del texto en 2
oled.setTextColor(WHITE); // Establecer el color del texto en blanco
oled.setCursor(0, 2); // Establecer la posición del cursor en la pantalla
oled.display(); // Mostrar el contenido en la pantalla OLED
delay(500); // Esperar 500 ms para finalizar la configuración
}
void loop() {
oled.clearDisplay(); // Limpiar la pantalla OLED
TempAndHumidity data = sensor.getTempAndHumidity(); // Obtener los datos de temperatura y humedad del sensor DHT
oled.setTextSize(2); // Establecer el tamaño del texto en 2
oled.setTextColor(WHITE); // Establecer el color del texto en blanco
oled.setCursor(0, 2); // Establecer la posición del cursor en la pantalla
oled.print("TEMP= " + String(data.temperature, 1) + "C"); // Mostrar la temperatura con un decimal
oled.setCursor(0, 36); // Establecer la posición del cursor en la pantalla
oled.display(); // Mostrar el contenido en la pantalla OLED
delay(2000); // Esperar 2 segundos
oled.clearDisplay(); // Limpiar la pantalla OLED nuevamente
if (data.temperature <= 37) { // Si la temperatura es menor o igual a 37°C
oled.setCursor(0, 27); // Establecer la posición del cursor
oled.println("TEMPERATURA NORMAL"); // Mostrar el mensaje "TEMPERATURA NORMAL"
oled.display(); // Mostrar el contenido en la pantalla OLED
} else { // Si la temperatura es mayor a 37°C
oled.setCursor(0, 45); // Establecer la posición del cursor
oled.println("TEMPERATURA ALTA"); // Mostrar el mensaje "TEMPERATURA ALTA"
oled.display(); // Mostrar el contenido en la pantalla OLED
}
delay(2000); // Esperar 2 segundos antes de repetir el ciclo
oled.clearDisplay(); // Limpiar la pantalla OLED nuevamente
}