#define BLYNK_TEMPLATE_ID "TMPLxxxxxx"
#define BLYNK_TEMPLATE_NAME "Pendeteksi Banjir"
#define BLYNK_AUTH_TOKEN "AuthTokenKamu"
#include <WiFi.h>
#define TRIG_PIN 5
#define ECHO_PIN 18
#define LED_KUNING 2
#define LED_MERAH 4
#define BUZZER 19
long duration;
int distance;
int level;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
pinMode(BUZZER, OUTPUT);
}
void loop() {
// Kirim pulsa trigger ke sensor HC-SR04
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Baca nilai echo dan konversi ke jarak
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Tentukan level banjir
if (distance > 30) {
level = 0; // Aman
} else if (distance > 20) {
level = 1; // Waspada
} else if (distance > 10) {
level = 2; // Siaga
} else {
level = 3; // Bahaya
}
// Logika setiap level
if (level == 0) {
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
noTone(BUZZER);
}
else if (level == 1) {
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
for (int i = 0; i < 5; i++) { // 5 kali bunyi
tone(BUZZER, 1000);
delay(300);
noTone(BUZZER);
delay(300);
}
}
else if (level == 2) {
digitalWrite(LED_KUNING, HIGH);
digitalWrite(LED_MERAH, LOW);
for (int i = 0; i < 10; i++) { // 10 kali bunyi
tone(BUZZER, 1000);
delay(200);
noTone(BUZZER);
delay(200);
}
}
else if (level == 3) {
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, HIGH);
for (int i = 0; i < 10; i++) { // 10 kali bunyi lebih cepat
tone(BUZZER, 1500);
delay(100);
noTone(BUZZER);
delay(100); // lebih cepat jedanya
}
}
delay(1000);
}