#define BLYNK_TEMPLATE_ID "TMPL2vMr0E_Mt"
#define BLYNK_TEMPLATE_NAME "IoT"
#define BLYNK_AUTH_TOKEN "qcUmVR4jpujnxouu3tEMtwB8PzYgMzbf"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 4 // Pin para el sensor de temperatura
#define HEATER_PIN 13 // Pin para el LED
#define PWM_CHANNEL 0
#define PWM_FREQUENCY 5000
#define PWM_RESOLUTION 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Cambié a LCD de 20x4 para Wokwi
float setHeatLevel = 0.0;
float currentTemperature = 0.0;
bool systemOn = false;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
BLYNK_WRITE(V0) {
setHeatLevel = param.asFloat();
}
void setup() {
Serial.begin(115200);
pinMode(HEATER_PIN, OUTPUT);
lcd.begin(20, 4);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
Serial.println("Iniciando...");
sensors.begin();
Blynk.begin(auth, ssid, pass);
/// timer.setInterval(1000L, updateTemperature);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Conectado a Blynk");
Serial.println("Conectado a Blynk");
}
BLYNK_WRITE(V3) {
int buttonState = param.asInt();
Serial.println(buttonState);
if (buttonState == 1) {
digitalWrite(HEATER_PIN, HIGH);
} else {
digitalWrite(HEATER_PIN, LOW);
}
}
void updateTemperature() {
sensors.requestTemperatures();
currentTemperature = sensors.getTempCByIndex(0);
if (systemOn) {
int heatIntensity = map(setHeatLevel, 0, 100, 0, 255);
ledcWrite(PWM_CHANNEL, heatIntensity);
Blynk.virtualWrite(V1, 1);
} else {
ledcWrite(PWM_CHANNEL, 0);
Blynk.virtualWrite(V1, 0);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp Act: ");
lcd.print(currentTemperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Calor: ");
lcd.print(setHeatLevel);
lcd.print(" %");
Blynk.virtualWrite(V0, currentTemperature);
}
void loop() {
Blynk.run();
timer.run();
}