#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define RELAY_PIN D6
#define BUTTON_PIN D1
char auth[] = "D_f5LKm2c5E9V-w4qZmtDCiDBxQkktv-";
unsigned long lastMillis ;
char ssid[] = "Đăng Anh";
char pass[] = "1234567890";
WidgetLED connectled(V0);
BlynkTimer timer;
void work(){
if( connectled.getValue())
{
connectled.off();
}
else
{
connectled.on();
}}
boolean socketState = 0;
void setup()
{
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH);// tat realay truoc khi bat dau
Blynk.begin(auth, ssid, pass);
attachInterrupt(BUTTON_PIN,update_value,HIGH);
timer.setInterval(1000L,work);
}
void update_value(){
if (digitalRead(BUTTON_PIN) == HIGH) {
Serial.println("on");
if(socketState==0){
socketState = 1;
Blynk.virtualWrite(V1, socketState);
digitalWrite(RELAY_PIN, HIGH);
}
else if(socketState==1){
socketState = 0;
Blynk.virtualWrite(V1, socketState);
digitalWrite(RELAY_PIN, LOW);
}
}
}
BLYNK_WRITE(V1)
{
int pinValue = param.asInt();
// Tùy vào lệnh nhận được ta thay đổi trạng thái bật tắt của ổ cắm
if (pinValue == 1)
{ socketState = 1;
Blynk.virtualWrite(V1, socketState);
digitalWrite(RELAY_PIN, LOW);
}
else
{
socketState = 0;
Blynk.virtualWrite(V1, socketState);
digitalWrite(RELAY_PIN, HIGH);
}
}
void loop()
{
Blynk.run();
timer.run();
if (millis() - lastMillis >= 1000) {
lastMillis = millis();
}
}
Are you talking about a physical LED, or an LED widget?
Is your switch a physical switch, or a button widget?
Which pins are these LEDs and switches attached to?
Pete.
- physical LED, pin D6
- physical switch , pin D1
— ESP8266 NodeMCU lua CP2102
I’m a bit confused by your interrupt service routine.
It won’t work correctly with recent ESP cores, because you’ll get ISR not in IRAM errors.
Also, as it’s HIGH trigger, the ISR will only be called when the pin is HIGH, so I don’t see why you’re checking if the pin is HIGH in the ISR.
Pete.