#define BUZZER_PIN 19
#define RAIN_ANALOG 22
#define RAIN_DIGITAL 23
#define LED_PIN 5
#define BLYNK_TEMPLATE_ID "TMPL6V2WIX0AP"
#define BLYNK_TEMPLATE_NAME "rain status"
#define BLYNK_AUTH_TOKEN "SFxaPG-CzDT_AOLsC8-YidzfGP2ZARUA"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
bool lastRainStatus = false; // Status terakhir (false = tidak hujan, true = hujan)
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(RAIN_ANALOG, INPUT);
pinMode(RAIN_DIGITAL, INPUT);
analogReadResolution(10);
timer.setInterval(1000L, myEvent);
}
void myEvent() {
bool currentRainStatus = digitalRead(RAIN_DIGITAL); // Baca status sensor hujan
if (currentRainStatus != lastRainStatus) { // Jika status berubah
if (currentRainStatus) { // Jika hujan
Serial.println("Hujan terdeteksi");
digitalWrite(LED_PIN, HIGH);
tone(BUZZER_PIN, 200);
delay(500);
noTone(BUZZER_PIN);
Blynk.virtualWrite(V0, "Hujan");
Blynk.virtualWrite(V1, ""); // Kosongkan kolom Tidak Hujan
} else { // Jika tidak hujan
Serial.println("Tidak hujan");
digitalWrite(LED_PIN, LOW);
Blynk.virtualWrite(V0, ""); // Kosongkan kolom Hujan
Blynk.virtualWrite(V1, "Tidak Hujan");
}
lastRainStatus = currentRainStatus; // Perbarui status terakhir
}
}
void loop() {
Blynk.run();
timer.run();
}