#define BLYNK_TEMPLATE_ID "TMPL61a-2qfrb"
#define BLYNK_TEMPLATE_NAME "Fan automatic control sebagai pendingin ruangan"
#define BLYNK_AUTH_TOKEN "IqPFvF6rDw6EjzHVovBxbPmwdiUr7DUf"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "wokwi guest";
char pass[] = "";
#define DHTPIN 12 // Pin yang terhubung dengan DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
#define LED_RED 18 // Kipas 1 (LED Merah)
#define LED_YELLOW 5 // Kipas 2 (LED Kuning)
#define LED_GREEN 17 // Kipas 3 (LED Hijau)
BlynkTimer timer;
void setup() {
Serial.begin(115200);
// Inisialisasi LED sebagai output
pinMode(LED_RED, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
// Inisialisasi sensor DHT
dht.begin();
// Koneksi ke Wi-Fi dan Blynk
Blynk.begin(auth, ssid, pass);
// Setup timer untuk pembacaan sensor DHT setiap 10 detik
timer.setInterval(10000L, readDHTSensor);
}
void readDHTSensor() {
// Membaca suhu dari sensor DHT22
float temperature = dht.readTemperature();
// Memeriksa apakah pembacaan berhasil
if (isnan(temperature)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.println("°C");
// Mengirim data suhu ke aplikasi Blynk
Blynk.virtualWrite(V0, temperature);
// Kontrol LED berdasarkan suhu
if (temperature >= 20 && temperature <= 24) {
Serial.println("Kipas 1 (Merah) ON");
digitalWrite(LED_RED, HIGH); // Kipas 1 (LED Merah) ON
digitalWrite(LED_YELLOW, LOW); // Kipas 2 (LED Kuning) OFF
digitalWrite(LED_GREEN, LOW); // Kipas 3 (LED Hijau) OFF
}
else if (temperature >= 25 && temperature <= 29) {
Serial.println("Kipas 1 (Merah) dan Kipas 2 (Kuning) ON");
digitalWrite(LED_RED, HIGH); // Kipas 1 (LED Merah) ON
digitalWrite(LED_YELLOW, HIGH); // Kipas 2 (LED Kuning) ON
digitalWrite(LED_GREEN, LOW); // Kipas 3 (LED Hijau) OFF
}
else if (temperature >= 30 && temperature <= 80) {
Serial.println("Kipas 1 (Merah), Kipas 2 (Kuning), dan Kipas 3 (Hijau) ON");
digitalWrite(LED_RED, HIGH); // Kipas 1 (LED Merah) ON
digitalWrite(LED_YELLOW, HIGH); // Kipas 2 (LED Kuning) ON
digitalWrite(LED_GREEN, HIGH); // Kipas 3 (LED Hijau) ON
}
else {
Serial.println("Semua Kipas OFF");
// Jika suhu di luar batas, semua kipas OFF
digitalWrite(LED_RED, LOW);
digitalWrite(LED_YELLOW, LOW);
digitalWrite(LED_GREEN, LOW);
}
}
void loop() {
Blynk.run(); // Menjalankan koneksi Blynk
timer.run(); // Menjalankan timer
}