#define BLYNK_TEMPLATE_ID "TMPL6T_nL504M"
#define BLYNK_TEMPLATE_NAME "Light System"
#define BLYNK_AUTH_TOKEN "hzvjMc_MlDDjPAGtIqB0tEsz8cU5iUT1"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
const int buttonPins[5] = {18, 19, 21, 22, 23};
const int ledPins[5] = {4, 5, 12, 13, 14};
bool ledStates[5] = {false, false, false, false, false};
const int ledVPins[5] = {V1, V2, V3, V4, V5};
#define LED_COUNT_VPIN V10
BlynkTimer timer;
// Hàm đổi trạng thái LED
void toggleLED(int index, int value) {
ledStates[index] = value;
digitalWrite(ledPins[index], value ? HIGH : LOW);
}
// Xử lý khi nhấn nút
void checkButtons() {
int countOn = 0;
for (int i = 0; i < 5; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
ledStates[i] = !ledStates[i];
digitalWrite(ledPins[i], ledStates[i] ? HIGH : LOW);
Blynk.virtualWrite(ledVPins[i], ledStates[i]);
}
if (ledStates[i]) countOn++;
}
Blynk.virtualWrite(LED_COUNT_VPIN, countOn);
}
// Nhận lệnh từ Blynk
BLYNK_WRITE(V1) { toggleLED(0, param.asInt()); }
BLYNK_WRITE(V2) { toggleLED(1, param.asInt()); }
BLYNK_WRITE(V3) { toggleLED(2, param.asInt()); }
BLYNK_WRITE(V4) { toggleLED(3, param.asInt()); }
BLYNK_WRITE(V5) { toggleLED(4, param.asInt()); }
void setup() {
Serial.begin(115200);
WiFi.begin(); // Sử dụng WiFi mặc định của Wokwi
Blynk.begin(auth, WiFi);
for (int i = 0; i < 5; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
pinMode(ledPins[i], OUTPUT);
}
timer.setInterval(500L, checkButtons);
}
void loop() {
Blynk.run();
timer.run();
}