#define BLYNK_TEMPLATE_ID "TMPL6J17RO4ss"
#define BLYNK_TEMPLATE_NAME "bubur ayam"
#define BLYNK_AUTH_TOKEN "995PXPSx6059fUX9q59KjFvvGZbnR3Jg"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define DHTPIN 21 // Pin data DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT22
#define BUZZER_PIN 22 // Pin buzzer
#define SWITCH_PIN V1 // Pin untuk switch (Virtual Pin V0)
#define SLIDER_PIN V2 // Pin untuk slider di Blynk (Virtual Pin V1)
#define GAUGE_PIN V0 // Pin untuk gauge dan suhu (Virtual Pin V2)
// Deklarasi WiFi
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
bool switchState = false;
int sliderValue = 0;
// Fungsi untuk membaca switch dari Blynk
BLYNK_WRITE(V1) {
switchState = param.asInt(); // Baca status switch (ON = 1, OFF = 0)
}
// Fungsi untuk membaca nilai slider dari Blynk
BLYNK_WRITE(V2) {
sliderValue = param.asInt(); // Baca nilai slider
}
// Fungsi untuk mengirim data suhu ke Blynk (Gauge dan Suhu)
void sendSensorData() {
float temperature = dht.readTemperature();
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Slider value: ");
Serial.println(sliderValue);
Serial.print("Switch state: ");
Serial.println(switchState);
Blynk.virtualWrite(GAUGE_PIN, temperature);
// Kondisi buzzer
if (temperature > 27 && sliderValue > 29 && switchState ) {
Serial.println("Buzzer ON");
tone(BUZZER_PIN, 1000); // Menghasilkan suara dengan frekuensi 1000 Hz
delay(500); // Buzzer berbunyi selama 0.5 detik
noTone(BUZZER_PIN); // Matikan buzzer
delay(500); // Jeda 0.5 detik sebelum berbunyi lagi
} else {
Serial.println("Buzzer OFF");
noTone(BUZZER_PIN); // Matikan buzzer jika kondisi tidak terpenuhi
}
}
void setup() {
// Inisialisasi serial monitor
Serial.begin(115200);
// Inisialisasi DHT sensor
dht.begin();
// Inisialisasi buzzer
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
// Inisialisasi WiFi dan Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Set timer untuk membaca sensor setiap 2 detik
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}