#define BLYNK_TEMPLATE_ID "TMPL6_VLocgjO"
#define BLYNK_TEMPLATE_NAME "Control 8 led"
#define DEBUG
#include "espConfig.h"
const int out[8] = {23,13,12,27,26,25,33,32};
const int btn[8] = {15,4,16,17,5,18,19,3};
unsigned long timeDelay = millis();
boolean updateState=0;
unsigned long timeBlink=millis();
WidgetLED ledConnect(V0);
#define RL1 V1
#define RL2 V2
#define RL3 V3
#define RL4 V4
#define RL5 V5
#define RL6 V6
#define RL7 V7
#define RL8 V8
void setup() {
Serial.begin(115200);
espConfig.begin();
for(int i=0; i<8;i++){
pinMode(out[i],OUTPUT);
pinMode(btn[i],INPUT_PULLUP);
attachInterrupt(btn[i],handleBtn,FALLING);
}
}
void loop() {
espConfig.run();
if(updateState==1){
Blynk.virtualWrite(RL1,digitalRead(out[0]));
Blynk.virtualWrite(RL2,digitalRead(out[1]));
Blynk.virtualWrite(RL3,digitalRead(out[2]));
Blynk.virtualWrite(RL4,digitalRead(out[3]));
Blynk.virtualWrite(RL5,digitalRead(out[4]));
Blynk.virtualWrite(RL6,digitalRead(out[5]));
Blynk.virtualWrite(RL7,digitalRead(out[6]));
Blynk.virtualWrite(RL8,digitalRead(out[7]));
updateState=0;
}
if(millis()-timeBlink>1000){
if(ledConnect.getValue()) ledConnect.off();
else ledConnect.on();
timeBlink=millis();
}
}
void app_loop(){}
ICACHE_RAM_ATTR void handleBtn(){
if(millis()-timeDelay>500){
for(int i=0;i<8;i++){
if(digitalRead(btn[i])==LOW){
digitalWrite(out[i],!digitalRead(out[i]));
}
}
updateState=1;
timeDelay=millis();
}
}
BLYNK_CONNECTED(){
Blynk.syncAll();
}
BLYNK_WRITE(RL1){
int p = param.asInt();
digitalWrite(out[0],p);
}
BLYNK_WRITE(RL2){
int p = param.asInt();
digitalWrite(out[1],p);
}
BLYNK_WRITE(RL3){
int p = param.asInt();
digitalWrite(out[2],p);
}
BLYNK_WRITE(RL4){
int p = param.asInt();
digitalWrite(out[3],p);
}
BLYNK_WRITE(RL5){
int p = param.asInt();
digitalWrite(out[4],p);
}
BLYNK_WRITE(RL6){
int p = param.asInt();
digitalWrite(out[5],p);
}
BLYNK_WRITE(RL7){
int p = param.asInt();
digitalWrite(out[6],p);
}
BLYNK_WRITE(RL8){
int p = param.asInt();
digitalWrite(out[7],p);
}