#define BLYNK_TEMPLATE_ID "TMPL6savleoX7"
#define BLYNK_TEMPLATE_NAME "Kontrol FAN"
#define BLYNK_AUTH_TOKEN "-AvV0o2EL1CPMKeHm657SIt_EkZeHp3P"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
int Kecepatan1R = 14; //Relay 1
int Kecepatan2R = 27; //Relay 2
int Kecepatan3R = 26; //Relay 3
int PB1 = 17; //PB Untuk Kecepatan1
int PB2 = 18; //PB Untuk Kecepatan2
int PB3 = 19; //PB Untuk Kecepatan3
int PBOFF = 16; //PB Untuk Kecepatan OFF
int LED1 = 25; //LED1 indikator Kecepatan1
int LED2 = 33; //LED2 indikator Kecepatan1
int LED3 = 32; //LED3 indikator Kecepatan1
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void myTimerEvent()
{
// You can send any value at any time.
// Please don't send more that 10 values per second.
Blynk.virtualWrite(V5, millis() / 1000);
}
//=====================Program Virtual Pin Blynk======================//
BLYNK_WRITE(V1) //Kecepatan1 ON
{
int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
//Motor DC
if(pinValue==1) //Jika Pin Bernilai 1
while (1)
{
Kecepatan1(); //Memanggil Fungsi Kecepatan1
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
Blynk.virtualWrite(V4, LOW); //Kondisi Virtual Pin 4 Mati
break;
}
}
BLYNK_WRITE(V2) //Kecepatan2 ON
{
int pinValue = param.asInt(); // assigning incoming value from pin V2 to a variable
//Motor DC
if(pinValue==1) //Jika Pin Bernilai 1
while (1)
{
Kecepatan2(); //Memanggil Fungsi Kecepatan2
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
Blynk.virtualWrite(V4, LOW); //Kondisi Virtual Pin 4 Mati
break;
}
}
BLYNK_WRITE(V3) //Kecepatan3 ON
{
int pinValue = param.asInt(); // assigning incoming value from pin V3 to a variable
//Motor DC
if(pinValue==1) //Jika Pin Bernilai 1
while (1)
{
Kecepatan3(); //Memanggil Fungsi Kecepatan3
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V4, LOW); //Kondisi Virtual Pin 4 Mati
break;
}
}
BLYNK_WRITE(V4) //PBOFF ON
{
int pinValue = param.asInt(); // assigning incoming value from pin V4 to a variable
//Motor DC
if(pinValue==1) //Jika Pin Bernilai 1
while (1)
{
OFF(); //Memanggil Fungsi OFF
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
break;
}
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, myTimerEvent);
pinMode(Kecepatan1R, OUTPUT);
pinMode(Kecepatan2R, OUTPUT);
pinMode(Kecepatan3R, OUTPUT);
digitalWrite(Kecepatan1R, HIGH);
digitalWrite(Kecepatan2R, HIGH);
digitalWrite(Kecepatan3R, HIGH);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
pinMode(PB1, INPUT_PULLUP);
pinMode(PB2, INPUT_PULLUP);
pinMode(PB3, INPUT_PULLUP);
pinMode(PBOFF, INPUT_PULLUP);
digitalWrite(PB1, HIGH);
digitalWrite(PB2, HIGH);
digitalWrite(PB3, HIGH);
digitalWrite(PBOFF, HIGH);
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
Blynk.virtualWrite(V4, HIGH); //Kondisi Virtual Pin 4 Nyala
}
void loop() {
Blynk.run();
timer.run();
//========================Program Push Button===========================//
if (digitalRead(PB1) == LOW) //PB1 Ditekan
while (1)
{
Kecepatan1();
break;
}
if (digitalRead(PB2) == LOW) //PB2 Ditekan
while (1)
{
Kecepatan2();
break;
}
if (digitalRead(PB3) == LOW) //PB3 Ditekan
while (1)
{
Kecepatan3();
break;
}
if (digitalRead(PBOFF) == LOW) //PBOFF Ditekan
while (1)
{
OFF();
break;
}
}
//============================Program Function==========================//
//Function Kecepatan1
void Kecepatan1() {
//Relay
digitalWrite(Kecepatan1R, LOW);
digitalWrite(Kecepatan2R, HIGH);
digitalWrite(Kecepatan3R, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V1, HIGH); //Kondisi Virtual Pin 1 Nyala
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
Blynk.virtualWrite(V4, LOW); //Kondisi Virtual Pin 4 Mati
}
//Function Kecepatan2
void Kecepatan2() {
//Relay
digitalWrite(Kecepatan1R, HIGH);
digitalWrite(Kecepatan2R, LOW);
digitalWrite(Kecepatan3R, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V2, HIGH); //Kondisi Virtual Pin 2 Nyala
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
Blynk.virtualWrite(V4, LOW); //Kondisi Virtual Pin 4 Mati
}
//Function Kecepatan3
void Kecepatan3() {
//Relay
digitalWrite(Kecepatan1R, HIGH);
digitalWrite(Kecepatan2R, HIGH);
digitalWrite(Kecepatan3R, LOW);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V3, HIGH); //Kondisi Virtual Pin 3 Nyala
Blynk.virtualWrite(V4, LOW); //Kondisi Virtual Pin 4 Mati
}
//Function OFF
void OFF() {
//Relay
digitalWrite(Kecepatan1R, HIGH);
digitalWrite(Kecepatan2R, HIGH);
digitalWrite(Kecepatan3R, HIGH);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V1, LOW); //Kondisi Virtual Pin 1 Mati
Blynk.virtualWrite(V2, LOW); //Kondisi Virtual Pin 2 Mati
Blynk.virtualWrite(V3, LOW); //Kondisi Virtual Pin 3 Mati
Blynk.virtualWrite(V4, HIGH); //Kondisi Virtual Pin 4 Nyala
}