// -*- coding: utf-8 -*-
#define BLYNK_TEMPLATE_ID "TMPL2l48XFmIX"
#define BLYNK_TEMPLATE_NAME "Proyecto en clase"
#define BLYNK_AUTH_TOKEN "xAtjfhxB_xap0af1wvf2ogcqax_7nTch"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <ESP32Servo.h>
#define DHTPIN 15
#define DHTTYPE DHT22
#define SERVOPIN 18
#define TEMP_UMBRAL 30.0
Servo servo;
DHT dht(DHTPIN, DHTTYPE);
// Coloca tus credenciales WiFi
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int pink = 12;
bool modoAutomatico = true;
int anguloManual = 0;
float temp = 0;
BLYNK_WRITE(V5) {
modoAutomatico = param.asInt(); // 1 = automático, 0 = manual
}
BLYNK_WRITE(V6) {
anguloManual = param.asInt(); // ángulo manual del slider
}
void setup() {
Serial.begin(115200);
dht.begin();
servo.attach(SERVOPIN);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("Fallo al leer el sensor DHT22");
return;
}
Serial.print("Temperatura: ");
Serial.print(temp);
Serial.print(" °C, Humedad: ");
Serial.print(hum);
Serial.println(" %");
// Enviar a Blynk
Blynk.virtualWrite(V0, temp);
Blynk.virtualWrite(V1, hum);
if (modoAutomatico) {
if (temp > TEMP_UMBRAL) {
servo.write(90); // abre válvula
Serial.println("Abriendo válvula");
} else {
servo.write(0); // cierra válvula
Serial.println("Cerrando válvula");
}
} else {
servo.write(anguloManual);
Serial.print("Servo en ");
Serial.print(anguloManual);
Serial.println("°");
}
delay(2000); // Esperar 2 segundos
}