// Hardibay : Monitoring level air menggunakan sensor ultrasonik berbasis blynk
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6Avg3GvNM"
#define BLYNK_TEMPLATE_NAME "Pendeteksi Ketinggian Air Hujan"
#define BLYNK_AUTH_TOKEN "yg097rDw1NlwUkphAYe5riXef-4nUwue"
#include <WiFi.h>
#include <Wire.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define triggerPin 2
#define echoPin 15
#define LED1 25
#define LED2 26
#define LED3 27
#define BUZZER_PIN 18 // Pin untuk buzzer
long durasi;
int jarak;
void setup() {
Blynk.begin(auth, ssid, pass);
{
Serial.print(".");
delay(500);
}
pinMode(triggerPin, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT); // Inisialisasi pin buzzer
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
Blynk.run();
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
durasi = pulseIn(echoPin, HIGH);
jarak = durasi * 0.034 / 2;
Blynk.virtualWrite(V3, jarak);
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.println(" cm");
if (jarak > 80) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
tone(BUZZER_PIN, 1000); // Matikan buzzer jika jarak > 80 cm
} else if (jarak <= 80 && jarak >= 40) {
digitalWrite(LED2, HIGH);
digitalWrite(LED1, LOW);
digitalWrite(LED3, LOW);
noTone(BUZZER_PIN); // Matikan buzzer jika 40 cm < jarak <= 80 cm
} else if (jarak < 40) {
digitalWrite(LED3, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED1, LOW);
noTone(BUZZER_PIN);
// Aktifkan buzzer jika jarak < 40 cm
// Atur frekuensi buzzer
}
}