jueves, 5 de marzo de 2026

GUARDIAN DEL INVERNADERO - GRADO 6 Misión: Configurar las alarmas de temperatura.

ARDUINO CODE

/*

 * GUARDIAN DEL INVERNADERO - GRADO 6
 * Mision: Configurar las alarmas de temperatura.
 */
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_SHT31.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Adafruit_SHT31 sht30 = Adafruit_SHT31();

// --- ZONA DE CONFIGURACIÓN DEL GUARDIÁN ---
// Este es el "UMBRAL" o la "Línea Roja".
// Si la temperatura pasa este numero, activamos la alarma.
float LIMITE_CALOR = 50.0; // <--- ¡ESTO ESTÁ MUY ALTO! CÁMBIALO.

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  sht30.begin(0x44);
  display.setTextColor(WHITE);
}

void loop() {
  float t = sht30.readTemperature();

  display.clearDisplay();
  display.setCursor(0, 0);
  display.setTextSize(1);
  display.println("MONITOR DE PLANTA");
 
  // Mostramos la temperatura actual
  display.setTextSize(2);
  display.setCursor(0, 20);
  display.print(t); display.print(" C");

  // --- AQUÍ ESTÁ EL CEREBRO (EL CONDICIONAL) ---
  display.setCursor(0, 45);
  display.setTextSize(1);

  // LA PREGUNTA DEL PORTERO:
  if (t > LIMITE_CALOR) {
    // Si es VERDAD (Hace mucho calor):
    display.println("PELIGRO: QUEMANDOSE!");
  } else {
    // Si es MENTIRA (Todo está bien):
    display.println("Todo tranquilo...");
  }

  display.display();
  delay(500);
}
_______________________________________________________________________________

WOKWI CODE
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT22
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// Inicializamos el objeto display
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
DHT dht(DHTPIN, DHTTYPE);

float LIMITE_CALOR = 20.0;

void setup() {
  Serial.begin(9600);

  // IMPORTANTE: En Wokwi para ESP32, usamos los pines 21 y 22
  Wire.begin(21, 22);

  // Inicializar pantalla (0x3C es el estándar en Wokwi)
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("Error en pantalla"));
    for(;;);
  }

  dht.begin();
  display.setTextColor(WHITE);
  display.clearDisplay();
  display.display();
}

void loop() {
  float t = dht.readTemperature();

  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println("MONITOR DE PLANTA");
 
  display.setCursor(0, 20);
  display.setTextSize(2);
 
  if (isnan(t)) {
    display.print("Error DHT");
  } else {
    display.print(t, 1);
    display.print(" C");
  }

  display.setCursor(0, 45);
  display.setTextSize(1);
  if (t > LIMITE_CALOR) {
    display.println("PELIGRO: QUEMANDOSE!");
  } else {
    display.println("Todo tranquilo...");
  }

  display.display();
  delay(1000);
}

connections

ComponentePin del ComponentePin en ESP32
OLEDVCC3.3V
OLEDGNDGND
OLEDSCLGPIO 22
OLEDSDAGPIO 21
DHT22VCC3.3V
DHT22DATAGPIO 2
DHT22GNDGND

No hay comentarios:

Publicar un comentario