#define BLYNK_TEMPLATE_ID "TMPL6aWZvyjgL"
#define BLYNK_TEMPLATE_NAME "ALAT DETEKSI BANJIR"
//#define BLYNK_AUTH_TOKEN "M16tzOaNVk2ZOr6tbsBFKBPboBIUSwAE"
//#include <WiFiClient.h>
//#include <BlynkSimpleEsp32.h>
#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>
// char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "LANGIT"; // Nama WiFi
char pass[] = "batukertas21"; // Kata sandi WiFi
#define TRIGGER_PIN 12 // Pin untuk sinyal Trig sensor ultrasonik
#define ECHO_PIN 14 // Pin untuk sinyal Echo sensor ultrasonik
#define MAX_DISTANCE 30 // Jarak maksimum yang akan diukur (dalam cm)
// BlynkTimer timer;
#define LED1_PIN 2 // Pin untuk lampu LED 1
#define LED2_PIN 4 // Pin untuk lampu LED 2
#define LED3_PIN 5 // Pin untuk lampu LED 3
#define BUZZER_PIN 13 // Pin untuk buzzer
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Membuat objek NewPing
// Inisialisasi objek LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD: 0x27, Jumlah Kolom: 16, Jumlah Baris: 2
void setup() {
Serial.begin(115200);
Serial.println("Starting setup...");
// Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
// timer.setInterval(1500L, sendSensor);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Set pin untuk lampu LED dan buzzer sebagai output
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
// Tes buzzer
tone(BUZZER_PIN, 1000); // Hidupkan buzzer pada frekuensi 1000Hz
delay(1000); // Tunggu selama 1 detik
noTone(BUZZER_PIN); // Matikan buzzer
Serial.println("Setup completed.");
}
void loop() {
// Blynk.run();
// timer.run();
sendSensor();
}
void sendSensor() {
unsigned int distance = sonar.ping_cm(); // Mengukur jarak dengan sensor ultrasonik
// Blynk.virtualWrite(V0, distance);
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
if (distance == 0) {
Serial.println("Error: Sensor ultrasonik tidak mendeteksi objek.");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Error: No Object");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.print(distance);
lcd.print(" cm");
lcd.setCursor(0, 1);
if (distance >= 1 && distance <= 9) {
lcd.print("Bahaya");
digitalWrite(LED3_PIN, HIGH);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
tone(BUZZER_PIN, 1000);
Serial.println("Status: Bahaya");
} else if (distance >= 10 && distance <= 19) {
lcd.print("Siaga");
digitalWrite(LED3_PIN, LOW);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED1_PIN, LOW);
noTone(BUZZER_PIN);
Serial.println("Status: Siaga");
} else if (distance >= 20 && distance <= 30) {
lcd.print("Waspada");
digitalWrite(LED3_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED1_PIN, HIGH);
noTone(BUZZER_PIN);
Serial.println("Status: Waspada");
}
}
// if (distance > 9) {
// Blynk.logEvent("pemberitahuan", "Jarak air mendekat");
// }
}