首页 > 解决方案 > 如何将两个物理按钮添加到 AC 风扇调光器草图并在按下后更新相应的滑块/步骤小部件

问题描述

互联网上有很多带有零交叉检测的 AC Fan 调光器代码,也可以由 Blynk 应用程序运行。

问题是所有这些都只能通过wifi(有互联网)控制,而根本没有手动控制(没有互联网)。

我在下面分享了一个由 blynk app (Board NodeMCU) 运行的 AC 风扇调光器的代码。它仅在 wifi 可用时运行,即它没有手动控制。我正在尝试通过添加两个物理按钮来改进/修改相同的代码,以便在互联网不可用时手动控制风扇速度。在这种情况下,我无法修改这两个按钮的代码,这两个按钮还能够与 Blynk 应用程序滑块按钮一起增加和降低风扇速度。任何人都可以帮助/指导我开发这个。

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#define triacPulse 4 //D2
#define ZVC 12 //D6

int Slider_Value;
int dimming;
int x = 0;

char auth[] = "AUTH TOKEN";        // You should get Auth Token in the Blynk App.


char ssid[] = "SSID";         // Your WiFi credentials.
char pass[] = "PASS";    // Set password to "" for open networks.


BLYNK_WRITE(V1)   // function to assign value to variable Slider_Value whenever slider changes position
{
  Slider_Value = param.asInt(); // assigning incoming value from pin V1 to a variable
}


void setup()
{

  pinMode(ZVC, INPUT_PULLUP);
  //digitalWrite(2, INPUT_PULLUP); // pull up
  pinMode(triacPulse, OUTPUT);
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  attachInterrupt(digitalPinToInterrupt(ZVC), acon, FALLING); // attach Interrupt at PIN2
}



void loop()
{
  Blynk.run();
  // When the switch is closed
  dimming = map(Slider_Value, 0, 100, 7200, 200); 

}

void acon()
{
  // Serial.println("REad");

  delayMicroseconds(dimming); // read AD0
  digitalWrite(triacPulse, HIGH);

  delayMicroseconds(50);  //delay 50 uSec on output pulse to turn on triac
  digitalWrite(triacPulse, LOW);

  // Serial.println(digitalRead(triacPulse));
}

标签: nodemcu

解决方案


推荐阅读