/*=====================================================================
Program Input-Output Digital dan Input ADC dengan ESP32 dan Blynk
Dibuat Oleh : Irfan Mahrubi
=======================================================================*/
//FIRMWARE CONFIGURATION -> Copy Paste dari website Blynk ==============
#define BLYNK_TEMPLATE_ID "TMPL9VjkTBnd"
#define BLYNK_DEVICE_NAME "INPUT OUTPUT MUTIARA"
#define BLYNK_AUTH_TOKEN "yPU6g7HmQ46oCvhJrYkxupYMUN4Y8h2A"
//======================================================================
//Untuk menampilkan serial monitor Blynk ===============================
#define BLYNK_PRINT Serial
//======================================================================
//Library yang digunakan ===============================================
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//======================================================================
//Token yang didapat dari bagian FIRMWARE CONFIGURATION ================
char auth[] = BLYNK_AUTH_TOKEN;
//======================================================================
//Akun wifi yang digunakan =============================================
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
//======================================================================
//Inisialisasi nilai konstan / fixed variables =========================
#define pin_POT 32 //pin potensiometer
#define pin_PB 33 //pin pushbotton
#define pin_LED1 25 //pin led1
#define pin_LED2 26 //pin led2
#define pin_LED3 27 //pin led3
#define pin_LED4 14 //pin led4
//======================================================================
//Inisialisasai variabel yang digunakan ================================
int ADC_Pot = 0; //
int PB = 0;
//======================================================================
//Menambahkan fungsi blynk timer =======================================
BlynkTimer timer;
//======================================================================
//Blynk Write untuk menerima data dari aplikasi blynk ==================
BLYNK_WRITE(V1){
int status_LED = param.asInt();
if(status_LED){
digitalWrite(pin_LED3,HIGH);
}
else{
digitalWrite(pin_LED3,LOW);
}
}
BLYNK_WRITE(V2){
int status_LED = param.asInt();
if(status_LED){
digitalWrite(pin_LED4,HIGH);
}
else{
digitalWrite(pin_LED4,LOW);
}
//=======================================================================
//Function membaca data ADC dari potensiometer ==========================
void ADC_POT (){
ADC_Pot = analogRead(pin_POT);
Blynk.virtualWrite(V0,ADC_Pot);
if(ADC_Pot > 3000){
digitalWrite(pin_LED2,HIGH);
}
else{
digitalWrite(pin_LED2,LOW);
}
//=======================================================================
//void setup ============================================================
void setup()
{
//Mengatur mode pin sebagai input atau output =========================
pinMode(pin_POT,INPUT);
pinMode(pin_PB,INPUT);
pinMode(pin_LED1,OUTPUT);
pinMode(pin_LED2,OUTPUT);
pinMode(pin_LED3,OUTPUT);
pinMode(pin_LED4,OUTPUT);
//=====================================================================
//Mengatur alamat serial monitor ======================================
Serial.begin(115200);
//=====================================================================
//Fungsi blynk mengatur firmware configuration dan akun wifi ==========
Blynk.begin(auth, ssid, pass);
//=====================================================================
//sinkronisasi pin virtual blynk dari aplikasi ========================
Blynk.syncVirtual(V1);
Blynk.syncVirtual(V2);
//=====================================================================
//Fungsi timer blynk mengatur waktu menjalankan fungsi didalamnya =====
timer.setInterval(50L,ADC_POT);
//=====================================================================
}
//=======================================================================
//void loop =============================================================
void loop()
{
//Menjalankan fungsi blynk ============================================
Blynk.run();
//=====================================================================
//Menjalankan fungsi timer blynk ======================================
timer.run();
//=====================================================================
//Program push button esp32 ===========================================
PB = digitalRead(pin_PB)
if(PB == 1){
digitalWrite(pin_LED1,HIGH);
}
else{
digitalWrite(pin_LED1,LOW);
}
//=====================================================================
//Menampilkan nilai hasil baca ADC potensiometer di serial monitor ====
Serial.println(ADC_Pot);
//=====================================================================
}
//=======================================================================