#define BLYNK_TEMPLATE_ID "TMPL6Oucho4t8"
#define BLYNK_TEMPLATE_NAME "MiniProjectHTTPrelayJB3"
#define BLYNK_AUTH_TOKEN "KdUbu8m_5j2cWLiGYN0Z95q5NCGRQOj4"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
#define relay1 2
#define relay2 4
#define relay3 13
#define relay4 12
#define pushButton 15
int SW_relay = 0;
bool lastButtonState = false;
bool buttonPressedStatus = false;
bool isButtonPressed() {
return digitalRead(pushButton) == LOW;
}
void checkButtonStatus() {
bool currentButtonState = isButtonPressed();
if (currentButtonState && !lastButtonState) {
buttonPressedStatus = !buttonPressedStatus;
if (buttonPressedStatus) {
Serial.println("Tombol ditekan");
Blynk.virtualWrite(V5, "Ditekan");
} else {
Serial.println("Tombol dilepaskan");
Blynk.virtualWrite(V5, "Dilepaskan");
// Matikan semua relay ketika tombol dilepaskan
turnOffAllRelays();
}
}
lastButtonState = currentButtonState;
}
void turnOffAllRelays() {
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
Serial.println("Relay 1 tertutup");
Serial.println("Relay 2 tertutup");
Serial.println("Relay 3 tertutup");
Serial.println("Relay 4 tertutup");
// Update status relay di Blynk
Blynk.virtualWrite(V1, LOW);
Blynk.virtualWrite(V2, LOW);
Blynk.virtualWrite(V3, LOW);
Blynk.virtualWrite(V4, LOW);
}
BLYNK_WRITE(V1) {
if (buttonPressedStatus) {
SW_relay = param.asInt();
if (SW_relay == 1) {
digitalWrite(relay1, HIGH);
Serial.println("Relay 1 terbuka");
Blynk.virtualWrite(V1, HIGH);
} else {
digitalWrite(relay1, LOW);
Serial.println("Relay 1 tertutup");
Blynk.virtualWrite(V1, LOW);
}
}
}
BLYNK_WRITE(V2) {
if (buttonPressedStatus) {
SW_relay = param.asInt();
if (SW_relay == 1) {
digitalWrite(relay2, HIGH);
Serial.println("Relay 2 terbuka");
Blynk.virtualWrite(V2, HIGH);
} else {
digitalWrite(relay2, LOW);
Serial.println("Relay 2 tertutup");
Blynk.virtualWrite(V2, LOW);
}
}
}
BLYNK_WRITE(V3) {
if (buttonPressedStatus) {
SW_relay = param.asInt();
if (SW_relay == 1) {
digitalWrite(relay3, HIGH);
Serial.println("Relay 3 terbuka");
Blynk.virtualWrite(V3, HIGH);
} else {
digitalWrite(relay3, LOW);
Serial.println("Relay 3 tertutup");
Blynk.virtualWrite(V3, LOW);
}
}
}
BLYNK_WRITE(V4) {
if (buttonPressedStatus) {
SW_relay = param.asInt();
if (SW_relay == 1) {
digitalWrite(relay4, HIGH);
Serial.println("Relay 4 terbuka");
Blynk.virtualWrite(V4, HIGH);
} else {
digitalWrite(relay4, LOW);
Serial.println("Relay 4 tertutup");
Blynk.virtualWrite(V4, LOW);
}
}
}
void setup() {
Serial.begin(115200);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(pushButton, INPUT_PULLUP);
Blynk.begin(auth, ssid, pass);
timer.setInterval(100L, checkButtonStatus);
}
void loop() {
Blynk.run();
timer.run();
}