#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6OpyGpZCs"
#define BLYNK_TEMPLATE_NAME "Praktik IoT"
#define BLYNK_AUTH_TOKEN "RK9wuwWovi1FtIWQOmA3JNrYuWqGUu6j"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define numLeds 13
int ledPins[numLeds] = {15, 2, 4, 5, 18, 19, 21, 22, 23, 25, 26, 32, 33};
int currentIndex = 0; // Indeks LED yang akan diatur berikutnya
bool isAnimating = false;
char auth[] = "RK9wuwWovi1FtIWQOmA3JNrYuWqGUu6j";
const char *ssid = "Wokwi-GUEST";
const char *pass = "";
BlynkTimer timer;
void setup()
{
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
// Mendaftarkan fungsi animateLeds() ke timer
timer.setInterval(762, animateLeds);
}
void loop()
{
Blynk.run();
timer.run();
}
BLYNK_WRITE(V0)
{
// Jika tombol ON ditekan
if (param.asInt() == 1) {
isAnimating = true;
currentIndex = 0;
// Nyalakan LED pertama
digitalWrite(ledPins[currentIndex], HIGH);
} else {
// Jika tombol OFF ditekan
isAnimating = false;
// Matikan semua LED
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
}
}
void animateLeds() {
if (isAnimating) {
// Matikan LED saat ini
digitalWrite(ledPins[currentIndex], LOW);
// Pindah ke LED berikutnya
currentIndex = (currentIndex + 1) % numLeds;
// Nyalakan LED berikutnya
digitalWrite(ledPins[currentIndex], HIGH);
}
}