// Ganti dengan token autentikasi Blynk Anda
// #define BLYNK_TEMPLATE_ID "TMPL6xvNSfay7"
// #define BLYNK_TEMPLATE_NAME "smart feed with esp32"
// #define BLYNK_AUTH_TOKEN "RdPaltSJvDtPjI3enyqXbx7Gflzn-A5I"
// char auth[] ="RdPaltSJvDtPjI3enyqXbx7Gflzn-A5I";
// // Ganti dengan informasi Wi-Fi Anda
// char ssid[] ="Wokwi-GUEST";
// char pass[] = "";
// #include <WiFi.h>
// #include <WiFiClient.h>
// #include <BlynkSimpleEsp32.h> // Library Blynk untuk ESP32
// Pin GPIO untuk LED
int ledPin = 13; // Gunakan GPIO 13 atau pin lainnya
int ledMerah=14;
int ledKuning=12;
float jarak;
float tinggiWadah=100.0;
#define pin_echo 18
#define pin_trig 5
float sisa;
float med;
float minim;
// Fungsi untuk menghidupkan atau mematikan LED berdasarkan status tombol di Blynk
// BLYNK_WRITE(V0) { // Menggunakan virtual pin V1 untuk tombol
// int buttonState = param.asInt(); // Membaca nilai tombol (0 atau 1)
// if (buttonState == 1) {
// digitalWrite(ledPin, HIGH); // Nyalakan LED
// } else {
// digitalWrite(ledPin, LOW); // Matikan LED
// }
// }
void setup() {
Serial.begin(115200); // Untuk debugging di serial monitor
// Menghubungkan ESP32 ke Blynk
// Blynk.begin(auth, ssid, pass);
// Mengatur pin LED sebagai output
pinMode(ledPin, OUTPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(pin_trig, OUTPUT);
pinMode(pin_echo, INPUT);
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, LOW);
digitalWrite(ledPin, LOW);
// digitalWrite(ledPin, LOW);
}
float sensor(){
digitalWrite(pin_trig, LOW);
delay(2);
digitalWrite(pin_trig, HIGH);
delay(10);
digitalWrite(pin_trig, LOW);
return pulseIn(pin_echo,HIGH)*0.034/2;
}
float coba(float jarak){
sisa=100.0*jarak/tinggiWadah;
return sisa;
}
float medium(){
med= 60.0/100.0*tinggiWadah;
return med;
}
float minimum(){
minim=80.0/100.0*tinggiWadah;
return minim;
}
void loop() {
// Blynk.run(); // Menjalankan komunikasi dengan Blynk
jarak=sensor();
Serial.println("jarak:" +String(jarak));
Serial.println("Persen medium: "+String(medium()));
Serial.println("Persen minimum: "+String(minimum()));
Serial.println("Persen jarak: "+String(coba(jarak)));
bool indikatorMerah=minimum()<jarak && jarak<=tinggiWadah;
bool indikatorKuning=jarak<minimum() && jarak>medium();
if (indikatorMerah){
digitalWrite(ledMerah, HIGH);
digitalWrite(ledKuning, LOW);
}else if(indikatorKuning){
digitalWrite(ledKuning, HIGH);
digitalWrite(ledMerah, LOW);
}
else{
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, LOW);
}
}