#include <DHT.h>
#include <ESP32Servo.h>
#include <Wire.h> // Incluir la librería para I2C
#include <Adafruit_GFX.h> // Incluir la librería principal de Adafruit para gráficos
#include <Adafruit_SSD1306.h> // Incluir la librería para OLED SSD1306
#define DHTPIN 14
#define DHTTYPE DHT22
#define SERVO_PIN 15
#define LED_RED_PIN 13
#define LED_GREEN_PIN 12
#define SCREEN_WIDTH 100 // Ancho de la pantalla OLED en píxeles
#define SCREEN_HEIGHT 60 // Alto de la pantalla OLED en píxeles
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Inicializar la pantalla OLED
DHT dht(DHTPIN, DHTTYPE);
Servo myservo;
void setup()
{
Serial.begin(115200);
dht.begin();
myservo.attach(SERVO_PIN, 500, 2400);
pinMode(LED_RED_PIN, OUTPUT);
pinMode(LED_GREEN_PIN, OUTPUT);
// Inicializar la pantalla OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // Dirección I2C de la pantalla OLED
{
Serial.println(F("No se encontró la pantalla OLED"));
for(;;);
}
// Limpiar la pantalla
display.clearDisplay();
}
void loop()
{
float temperature = dht.readTemperature();
if (isnan(temperature))
{
Serial.println("Fallo al leer el sensor DHT!");
return;
}
Serial.print("Temperatura: ");
Serial.print(temperature);
Serial.println("°C");
// Mostrar temperatura en la pantalla OLED
display.clearDisplay();
display.setTextSize(2); // Tamaño del texto
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Temp:");
display.setCursor(10,35);
display.print(temperature);
display.print(" C");
display.display();
if (temperature > 20)
{
myservo.write(0);
digitalWrite(LED_RED_PIN, HIGH);
digitalWrite(LED_GREEN_PIN, LOW);
}
else
{
myservo.write(-180);
digitalWrite(LED_RED_PIN, LOW);
digitalWrite(LED_GREEN_PIN, HIGH);
}
delay(2000);
}