#include <DHT.h> // Librería para el sensor DHT11
#include <DHT_U.h> // Librería unificada de sensores de Adafruit
#include <U8g2lib.h> // Librería U8g2 para la pantalla OLED
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
// Define el tipo de sensor DHT y el pin
#define DHTPIN 4
#define DHTTYPE DHT11 // Especificamos que es un sensor DHT11
// Crea el objeto DHT
DHT dht(DHTPIN, DHTTYPE);
// Define el pin para el LDR (salida digital DO)
#define LDR_DOUT_PIN GPIO_NUM_5
// Constructor U8g2 para tu OLED (revisa el Tutorial 3, Actividad 4 si no estás seguro)
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
void setup() {
Serial.begin(115200);
dht.begin(); // Inicializa el sensor DHT
pinMode(LDR_DOUT_PIN, INPUT); // Configura el pin del LDR como entrada
u8g2.begin(); // Inicializa la pantalla OLED
u8g2.setFontMode(1); // Modo de fuente transparente
u8g2.setFontDirection(0); // Orientación horizontal
}
void loop() {
delay(2000); // Espera 2 segundos entre lecturas para no saturar el DHT11
// Lecturas del sensor DHT11
float h = dht.readHumidity();
float t = dht.readTemperature();
// Lectura del estado digital del módulo LDR
int ldrState = digitalRead(LDR_DOUT_PIN);
String estadoLuz = "Desconocido";
if (ldrState == HIGH) {
estadoLuz = "Oscuro"; // O "Poca Luz", dependiendo de cómo ajuste el potenciómetro
} else {
estadoLuz = "Claro"; // O "Mucha Luz"
}
u8g2.firstPage(); // Inicia el ciclo de dibujo de la pantalla
do {
u8g2.clearBuffer(); // Limpia el buffer de la pantalla
// --- Mostrar Temperatura ---
u8g2.setFont(u8g2_font_helvB10_tr); // Fuente para temperatura
u8g2.setCursor(0, 12);
if (isnan(t)) {
u8g2.print("Temp: Error");
} else {
u8g2.print("Temp: ");
u8g2.print(t, 1); // Muestra con un decimal
u8g2.print(" C");
}
// --- Mostrar Humedad ---
u8g2.setCursor(0, 32);
if (isnan(h)) {
u8g2.print("Hum: Error");
} else {
u8g2.print("Hum: ");
u8g2.print(h, 1); // Muestra con un decimal
u8g2.print(" %");
}
// --- Mostrar Estado de Luz ---
u8g2.setCursor(0, 52);
u8g2.print("Luz: ");
u8g2.print(estadoLuz);
} while (u8g2.nextPage()); // Pasa a la siguiente página
// Mostrar también en el Monitor Serial (para depuración)
Serial.print(F("Temp: ")); Serial.print(t); Serial.print(F(" C | "));
Serial.print(F("Hum: ")); Serial.print(h); Serial.print(F(" % | "));
Serial.print(F("Luz: ")); Serial.println(estadoLuz);
}Loading
aitewinrobot-esp32c3-supermini
aitewinrobot-esp32c3-supermini