// --- Kredensial Blynk (Tempel dari Web Blynk) ---
#define BLYNK_TEMPLATE_ID "TMPL6yOkIcsK-"
#define BLYNK_TEMPLATE_NAME "dashboard suhu v5"
#define BLYNK_AUTH_TOKEN "tFVL9vkJlhu2r50zAth3TS0nUbma3SZP"
#define BLYNK_PRINT Serial
// --- Library yang Dibutuhkan ---
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
// --- Kredensial Wi-Fi Anda ---
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// --- Pengaturan Pin & Objek ---
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer; // Membuat objek timer dari Blynk
// --- Fungsi untuk Mengirim Data Sensor ---
// Fungsi ini akan dipanggil secara berkala oleh timer
void sendSensorData() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
// Kirim data ke pin virtual Blynk
Blynk.virtualWrite(V1, t); // V1 untuk Suhu
Blynk.virtualWrite(V2, h); // V2 untuk Kelembapan
// Tampilkan juga di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: " + String(t, 1) + " C");
lcd.setCursor(0, 1);
lcd.print("Lembab: " + String(h, 1) + "%");
Serial.print("Suhu: ");
Serial.print(t);
Serial.print(" *C, Kelembapan: ");
Serial.print(h);
Serial.println(" %");
}
void setup() {
Serial.begin(115200);
// Inisialisasi komponen
lcd.init();
lcd.backlight();
dht.begin();
// Koneksi ke Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Atur timer untuk memanggil fungsi sendSensorData setiap 2 detik (2000L)
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run(); // Menjalankan semua proses Blynk (koneksi, dll)
timer.run(); // Menjalankan timer
}