#define BLYNK_TEMPLATE_ID "TMPL6ocqwAFR7"
#define BLYNK_TEMPLATE_NAME "Servo ESP32"
#define BLYNK_AUTH_TOKEN "b6Tv9fwZplnc9Iphh8A4Y_x3KqxYZOXu"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <LiquidCrystal.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Ganti dengan SSID WiFi Anda
char pass[] = ""; // Ganti dengan password WiFi Anda
#define DHTPIN 4 // Pin Data DHT22
#define DHTTYPE DHT22 // Tipe sensor
DHT dht(DHTPIN, DHTTYPE);
// Inisialisasi LCD 16x2 (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 14, 27, 26, 25, 33);
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dht.begin();
lcd.begin(16, 2); // Ukuran LCD 16 kolom dan 2 baris
lcd.setCursor(0, 0);
lcd.print("Connecting...");
}
void loop() {
Blynk.run();
readAndDisplayTemperature();
delay(5000); // Tunggu 5 detik sebelum mengirim data lagi
}
void readAndDisplayTemperature() {
double temperature = dht.readTemperature(); // Membaca suhu dalam Celsius sebagai double
if (!isnan(temperature)) { // Periksa apakah nilai suhu valid
// Tampilkan suhu di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
// Tampilkan suhu di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.println(" C");
// Kirim data suhu ke Blynk di Virtual Pin V4 sebagai double
if (temperature >= 0 && temperature <= 100) {
Blynk.virtualWrite(V4, temperature); // Mengirim suhu sebagai double
Serial.print("Suhu dikirim ke Blynk: ");
Serial.println(temperature); // Tampilkan suhu yang dikirim
}
} else {
Serial.println("Failed to read from DHT sensor!");
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
}
}
// Fungsi ini dipanggil ketika data diterima di V4
BLYNK_WRITE(V4) {
double pinValue = param.asDouble(); // Mengambil nilai yang diterima dari Blynk sebagai double
Serial.print("Data diterima di V4: ");
Serial.println(pinValue);
// Anda bisa menambahkan logika lain di sini berdasarkan nilai yang diterima
}