ผมสร้างเงื่อนไขควบคุม NodeMCU ผ่านโปรแกรม Blynk ไม่ได้ครับ

ผมสร้างเงื่อนไขควบคุม NodeMCU ผ่านโปรแกรม Blynk ไม่ได้ครับ คือในปกติแล้วถ้า run โปรแกมเฉยๆเลยมันก็ทำได้แล้ว แต่ผมต้องการให้กดปุ่มครั้งใหม่แล้วปุ้มครั้งเก่าถูกปิด (คล้ายๆปุ่มพัดลม ที่กดครั้งใหม่ ครั้งเก่าที่เคยกดไว้จะถูกตัดทิ้ง แล้วให้โปรแกรมทำงานครั้งใหม่แทน) 
บอร์ดที่ใช้คือ NodeMCU 1.0 (ESP-12E Module) ใช้ขา D0,D1,D2,D3 ทั้งหมด 4 ขา
โค้ดที่เขียนไว้อะครับ 

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "____________";
char ssid[] = "____________";
char pass[] = "___________";

#define relayAPin 16 //GPIO
#define relayBPin 5
#define relayCPin 4
#define relayDPin 0

#define relayA V1
#define relayB V2
#define relayC V3
#define relayD V4

  if(BLYNK_WRITE(D3)) 
  {
    if (param.asInt() == 1) 
    {
        if (digitalRead(D0) != LOW) 
        {
           digitalWrite(D0, LOW);
        } 
        if (digitalRead(D1) != LOW) 
        {
          digitalWrite(D1, LOW);
        } 
        if (digitalRead(D2) != LOW) 
        {
          digitalWrite(D2, LOW);
        } 
     } 
  }

  else if(BLYNK_WRITE(D0)) 
  {
     if (param.asInt() == 1) 
     {
        if (digitalRead(D3) != LOW) 
        {
          digitalWrite(D3, LOW);
        } 
        if (digitalRead(D1) != LOW) 
        {
          digitalWrite(D1, LOW);
        } 
        if (digitalRead(D2) != LOW) 
        {
          digitalWrite(D2, LOW);
        } 
      } 
   }

   else if(BLYNK_WRITE(D1)) 
   {
      if (param.asInt() == 1) 
      {
         if (digitalRead(D0) != LOW) 
         {
            digitalWrite(D0, LOW);
         } 
         if (digitalRead(D3) != LOW) 
         {
            digitalWrite(D3, LOW);
         } 
         if (digitalRead(D2) != LOW) 
         {
            digitalWrite(D2, LOW);
         } 
      } 
   }

   else if(BLYNK_WRITE(D2)) 
   {
      if (param.asInt() == 1) 
      {
         if (digitalRead(D0) != LOW) 
         {
            digitalWrite(D0, LOW);
         } 
         if (digitalRead(D1) != LOW) 
         {
            digitalWrite(D1, LOW);
         } 
         if (digitalRead(D3) != LOW) 
         {
            digitalWrite(D3, LOW);
         } 
      } 
   }

void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  pinMode(D0,OUTPUT);
  pinMode(D1,OUTPUT);
  pinMode(D2,OUTPUT);
  pinMode(D3,OUTPUT);
}

void loop()
{
  Blynk.run(); 
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่