#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6DhE0qjeq"
#define BLYNK_TEMPLATE_NAME "relay"
#define BLYNK_AUTH_TOKEN "g6MYY5whHBvT2w3_3zOG2SZsJkbATeI0"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define relay1 14
#define relay2 27
#define relay3 26
#define relay4 25
#define b1 17
#define b2 5
#define b3 18
#define b4 19
#define b5 21
int tam=0;
int relay1_state = 0;
int relay2_state = 0;
int relay3_state = 0;
int relay4_state = 0;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
Serial.begin(9600);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(b1, INPUT_PULLUP);
pinMode(b2, INPUT_PULLUP);
pinMode(b3, INPUT_PULLUP);
pinMode(b4, INPUT_PULLUP);
pinMode(b5, INPUT_PULLUP);
}
BLYNK_WRITE(V0) {
relay1_state = param.asInt();
digitalWrite(relay1, relay4_state);
}
BLYNK_WRITE(V1) {
relay2_state = param.asInt();
digitalWrite(relay2, relay4_state);
}
BLYNK_WRITE(V2) {
relay3_state = param.asInt();
digitalWrite(relay3, relay4_state);
}
BLYNK_WRITE(V3) {
relay4_state = param.asInt();
digitalWrite(relay4, relay4_state);
}
BLYNK_WRITE(V4) {
int pinValue = param.asInt();
relay1_state = pinValue;
relay2_state = pinValue;
relay3_state = pinValue;
relay4_state = pinValue;
digitalWrite(relay1, pinValue);
digitalWrite(relay2, pinValue);
digitalWrite(relay3, pinValue);
digitalWrite(relay4, pinValue);
}
void loop() {
Blynk.run();
if (digitalRead(b1) == 0 )
{ while (digitalRead(b1) == 0 );
relay1_state=!relay1_state;
}
if (digitalRead(b2) == 0 )
{ while (digitalRead(b2) == 0 );
relay2_state=!relay2_state;
}
if (digitalRead(b3) == 0 )
{ while (digitalRead(b3) == 0 );
relay3_state=!relay3_state;
}
if (digitalRead(b4) == 0 )
{ while (digitalRead(b4) == 0 );
relay4_state=!relay4_state;
}
if (digitalRead(b5) == 0 )
{ while (digitalRead(b5) == 0 );
tam++;
if (tam> 1) tam=0;
ALL_relay();
}
if (relay1_state == 1 )
{digitalWrite(relay1, HIGH);
Blynk.virtualWrite(V0, relay1_state);} else
{digitalWrite(relay1, LOW);Blynk.virtualWrite(V0, relay1_state);}
if (relay2_state == 1 )
{digitalWrite(relay2, HIGH);
Blynk.virtualWrite(V1, relay2_state);} else
{digitalWrite(relay2, LOW);Blynk.virtualWrite(V1, relay2_state);}
if (relay3_state == 1 )
{digitalWrite(relay3, HIGH);
Blynk.virtualWrite(V2, relay3_state);} else
{digitalWrite(relay3, LOW);Blynk.virtualWrite(V2, relay3_state);}
if (relay4_state == 1 )
{digitalWrite(relay4, HIGH);
Blynk.virtualWrite(V3, relay4_state);} else
{digitalWrite(relay4, LOW);Blynk.virtualWrite(V3, relay4_state);}
}
void ALL_relay()
{
if (tam ==1)
{
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
relay1_state = 1;
relay2_state = 1;
relay3_state = 1;
relay4_state = 1;
}
if (tam ==0)
{
digitalWrite(relay1, 0);
digitalWrite(relay2, 0);
digitalWrite(relay3, 0);
digitalWrite(relay4, 0);
relay1_state = 0;
relay2_state = 0;
relay3_state = 0;
relay4_state = 0;
}
Blynk.virtualWrite(V0, relay1_state);
Blynk.virtualWrite(V1, relay2_state);
Blynk.virtualWrite(V2, relay3_state);
Blynk.virtualWrite(V3, relay4_state);
}