#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include "DHTesp.h"
//Decaramos el variable que almacena el pin a conectar el DHT11
int pinDHT = 15;
DHTesp dht;
#define SCREEN_WIDTH 128 // Ancho de la pantalla OLED en pixeles
#define SCREEN_HEIGHT 64 // Alto de la pantalla OLED en pixeles
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define LED_ROJO 19 //DECLARO LOS PINES
#define BOTON 14 //DECLARO LOS PINES
#define INTERRUPTOR 4 //DECLARO LOS PINES
boolean estadoBoton; //AQUÍ SE GUARDA EL DATO DEL BOTON 1/0
boolean estadoInterruptor;//AQUÍ SE GUARDA EL DATO DEL INTERRUPTOR 1/0
void setup() {
//Inicializamos el dht
dht.setup(pinDHT, DHTesp::DHT22);
// Inicialización de la pantalla OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
// Si hay un error al inicializar la pantalla, muestra un mensaje en el monitor serie
Serial.println(F("SSD1306 failed to initialize"));
for(;;); // Se detiene el programa
}
// Limpia la pantalla
display.clearDisplay();
pinMode(INTERRUPTOR, INPUT);//Configura "INTERRUPTOR" como entrada
pinMode(LED_ROJO, OUTPUT); //Configura "LED_ROJO" como salida
pinMode(BOTON, INPUT);//Configura "BOTON" como entrada
}
void loop() {
//Obtenemos el arreglo de datos (humedad y temperatura)
TempAndHumidity data = dht.getTempAndHumidity();
SensorDeTemperatura();
display.setTextSize(2); // Tamaño del texto
display.setTextColor(SSD1306_WHITE);// Color del texto
display.setCursor(0, 10); // Posición del texto
estadoInterruptor = digitalRead(INTERRUPTOR); //ALMACENO EL ESTADO DEL INTERRUPTOR
if(estadoInterruptor == HIGH){//PREGUNTAMOS POR EL ESTADO DEL INTERRUPTOR
estadoBoton = digitalRead(BOTON); //ALMACENO EL ESTADO DEL BOTON
if(estadoBoton == HIGH){ //PREGUNTAMOS POR EL ESTADO DEL BOTON
EncenderLed(); //LLamamos a la subfuncion para que se ejecute el codigo
}else{ //Si no
ApagarLed(); //Lamamos a la subfuncion para apagar el led
}
}
}
void EncenderLed(){ //Subfunción para encender el Led
digitalWrite(LED_ROJO, HIGH);
display.clearDisplay();
display.println("ENCENDIDO");// Texto a mostrar
delay(100);
}
void ApagarLed(){
digitalWrite(LED_ROJO, LOW);
// Actualiza la pantalla
display.display();
delay(100); // Espera dos segundos antes de volver a escribir el texto
}
void SensorDeTemperatura(){
//Mostramos los datos de la temperatura y humedad
display.println("Temperatura: " + String(data.temperature, 2) + "°C");
display.println("Humedad: " + String(data.humidity, 1) + "%");
display.println("---");
delay(1000);
}