#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_AUTH_TOKEN "uw3NngWRRTD3RDMJio6pQK2FgHrGwk2k" // Enter your Blynk auth token
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Enter your WiFi name
char pass[] = ""; // Enter your WiFi password
// Define LED pins
const int led1Pin = 2;
const int led2Pin = 4;
const int led3Pin = 5;
// Blynk virtual pins
#define BUTTON_PIN V0
bool lampuMenyala = false;
int currentLED = led1Pin;
BLYNK_WRITE(BUTTON_PIN) {
int buttonState = param.asInt();
if (buttonState == HIGH) {
// Jika lampu belum menyala, nyalakan
if (!lampuMenyala) {
lampuMenyala = true;
currentLED = led1Pin;
digitalWrite(currentLED, HIGH);
} else { // Jika lampu sudah menyala, matikan semua
lampuMenyala = false;
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
}
delay(200); // Delay sementara untuk mencegah bouncing (goyangan) pada push button
}
}
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize the LED pins as outputs
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
// Initialize Blynk
Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
}
void loop() {
// Jika lampu menyala, lakukan running effect
if (lampuMenyala) {
digitalWrite(currentLED, LOW); // Matikan LED saat ini
// Pindah ke LED berikutnya
if (currentLED == led1Pin) {
currentLED = led2Pin;
} else if (currentLED == led2Pin) {
currentLED = led3Pin;
} else {
currentLED = led1Pin;
}
digitalWrite(currentLED, HIGH); // Nyalakan LED baru
delay(500); // Delay antar pergantian LED
}
Blynk.run();
}