// Mendefinisikan konfigurasi Blynk dan Serial untuk ESP32
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLae7BdBOC"
#define BLYNK_TEMPLATE_NAME "WokwiIoT"
#define BLYNK_AUTH_TOKEN "2bTt_OpvocQ5YcyjW8PiLDe3O9oX3N2S"
// Memanggil library yang di butuhkan
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
// Mendefinisikan variabel auth, ssid, dan pass untuk Blynk dan WiFi
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Membuat objek timer pada Blynk
BlynkTimer timer;
// Mendefinisikan variabel untuk menyimpan data ADC
int dataadc1,dataadc2;
// Mendefinisikan pin servo dan membuat objek servo
const int servoPin = 18;
Servo servo;
// Mendefinisikan pin LED dan variabel SW_State dan pos
#define LED 13
int SW_State=0;
int pos=0;
// Fungsi yang akan dipanggil saat nilai pada Virtual Pin V0 diubah pada aplikasi Blynk
BLYNK_WRITE (V0)
{
// Mengambil nilai dari Virtual Pin dan menyimpannya pada variabel SW_State
SW_State = param.asInt();
if (SW_State == 1)
{
// Menghidupkan LED dan menampilkan pesan pada Serial Monitor
digitalWrite(LED, HIGH);
Serial.println("LAMPU HIDUP");
// Mengirimkan nilai HIGH pada Virtual Pin V1 pada aplikasi Blynk
Blynk.virtualWrite(V1, HIGH);
}
else
{
// Mematikan LED dan menampilkan pesan pada Serial Monitor
digitalWrite(LED, LOW);
Serial.println("LAMPU MATI");
// Mengirimkan nilai LOW pada Virtual Pin V1 pada aplikasi Blynk
Blynk.virtualWrite(V1, LOW);
}
}
// Fungsi yang akan dipanggil saat nilai pada Virtual Pin V6 diubah pada aplikasi Blynk
BLYNK_WRITE (V6)
{
// Mengambil nilai dari Virtual Pin dan menyimpannya pada variabel pos
pos = param[0].asInt();
// Menggerakkan servo sesuai dengan posisi yang ditentukan dan menampilkan posisi pada Serial Monitor
servo.write(pos);
Serial.println(pos);
}
// Fungsi yang akan dipanggil setiap 1 detik untuk mengirimkan data ADC pada aplikasi Blynk
void senddata() {
// Mengirimkan data pada Virtual Pin V4 dan V5 pada aplikasi Blynk dan menampilkan nilai pada Serial Monitor
Blynk.virtualWrite(V4, dataadc1);
Blynk.virtualWrite(V5, dataadc2);
Serial.println(dataadc1);
Serial.println(dataadc2);
}
void setup()
{
// Mengatur pin LED sebagai output dan menghubungkan servo dengan pin 18 serta menentukan nilai range servo
pinMode(LED, OUTPUT);
servo.attach(servoPin, 500, 2400);
// Menghubungkan ESP32 dengan Serial Monitor
Serial.begin(9600);
// menghubungkan ke jaringan wifi dan aplikasi blynk
Blynk.begin(auth, ssid, pass);
// menjalankan fungsi senddata setiap 1 detik
timer.setInterval(1000L, senddata);
}
void loop()
{
// membaca data adc dari sensor
dataadc1 = analogRead(34);
dataadc2 = analogRead(35);
delay(200);
// menjalankan blynk dan timer
Blynk.run();
timer.run();
}