/*=====================================================================
Program Input-Output Digital dan Input ADC dengan ESP32 dan Blynk
Dibuat Oleh : Irfan Mahrubi
=======================================================================*/
#define BLYNK_TEMPLATE_ID "TMPLYmbBr4S5"
#define BLYNK_DEVICE_NAME "ESP32 INPUT OUTPUT DIGITAL DAN INPUT ADC"
#define BLYNK_AUTH_TOKEN "cIX_5ax71Qbbtl5Wrnjzmn1ftAgFoIZ7"
//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
#define pin_PB 33
#define pin_LED1 25
#define pin_LED2 26
#define pin_LED3 27
#define pin_LED4 14
//======================================================================
//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);
//=====================================================================
}
//=======================================================================