// Mendefinisikan template ID, template name, dan token otentikasi Blynk
#define BLYNK_TEMPLATE_ID "TMPL66kuD2mIH"
#define BLYNK_TEMPLATE_NAME "blablablaa"
#define BLYNK_AUTH_TOKEN "1wntBJlaaJXcL42JDc419u23zooP5kbF"
#define BLYNK_PRINT Serial
// Mengimpor library yang diperlukan untuk terhubung ke Blynk
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = "1wntBJlaaJXcL42JDc419u23zooP5kbF"; // Token otentikasi Blynk
char ssid[] = "Wokwi-GUEST"; // Nama jaringan WiFi
char pass[] = ""; // Kata sandi jaringan WiFi
// Pin yang digunakan untuk komponen
const int trigPin = 18; // Pin trigger sensor ultrasonik
const int echoPin = 19; // Pin echo sensor ultrasonik
const int servo1Pin = 14; // Pin servo 1
const int servo2Pin = 27; // Pin servo 2
const int ledV0 = V0; // Pin virtual LED V0 di aplikasi Blynk
const int ledV5 = V5; // Pin virtual LED V5 di aplikasi Blynk
const int ledV8 = V8; // Pin virtual LED V8 di aplikasi Blynk
const int terminalV3 = V3; // Pin virtual terminal V3 di aplikasi Blynk
Servo servo1;
Servo servo2;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
Blynk.begin(auth, ssid, pass); // Menghubungkan ke server Blynk dengan menggunakan token otentikasi dan informasi jaringan WiFi
}
void loop() {
Blynk.run(); // Mengakses event Blynk
// Membaca jarak menggunakan sensor ultrasonik
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
// Mengendalikan servo 1 jika jarak di bawah 10 cm
if (distance < 10) {
Blynk.virtualWrite(ledV8, HIGH);
Blynk.virtualWrite(ledV0, HIGH); // Menghidupkan LED virtual V0
Blynk.virtualWrite(terminalV3, "Tangki telah penuh"); // Menampilkan pesan di terminal virtual V3
servo1.write(90); // Menggerakkan servo 1 ke posisi 90 derajat
} else {
Blynk.virtualWrite(ledV8, LOW);
Blynk.virtualWrite(ledV0, LOW); // Mematikan LED virtual V0
Blynk.virtualWrite(terminalV3, "Tangki belum penuh"); // Menampilkan pesan di terminal virtual V3
servo1.write(0); // Menggerakkan servo 1 ke posisi 0 derajat
}
// Mengendalikan servo 2 saat tombol ditekan
if(distance > 10){
Blynk.virtualWrite(ledV5, HIGH); // Menghidupkan LED virtual V5
servo2.write(90); // Menggerakkan servo 2 ke posisi 90 derajat
} else {
servo2.write(0); // Menggerakkan servo 2 ke posisi 0 derajat
}
delay(100); // Memberikan jeda 100 milidetik sebelum mengulang
}