Button 要将为按钮编码的程序更改为普通开关按钮吗

Button 要将为按钮编码的程序更改为普通开关按钮吗,button,automation,arduino,feedback,blynk,Button,Automation,Arduino,Feedback,Blynk,因此,基本上,我正在为家庭自动化开发一个反馈系统,该系统将连接到你的主板的物理按钮的状态更新到Blynk应用程序上,因此,您可以手动或通过应用程序控制灯光。我使用的是ESP32板。连接到板上的物理按钮的状态被获取,并发送到blynk应用程序上的虚拟按钮,使用blynk I.e param.asInt()的本机逻辑。因此,我无法使用正常开关的逻辑,如: if (digitalRead(PUSH_BUTTON_1) == LOW) { digitalWrite(RELAY_PIN_1, HIGH);

因此,基本上,我正在为家庭自动化开发一个反馈系统,该系统将连接到你的主板的物理按钮的状态更新到Blynk应用程序上,因此,您可以手动或通过应用程序控制灯光。我使用的是ESP32板。连接到板上的物理按钮的状态被获取,并发送到blynk应用程序上的虚拟按钮,使用blynk I.e param.asInt()的本机逻辑。因此,我无法使用正常开关的逻辑,如:

if (digitalRead(PUSH_BUTTON_1) == LOW) {
digitalWrite(RELAY_PIN_1, HIGH);

// Update Button Widget
Blynk.virtualWrite(VPIN_BUTTON_1, HIGH);}
因为我必须使用relay1State,它作为param.asInt()给出;更新blynk应用程序。如果我使用这种类型的代码,我会在blynk应用程序中发生顺序切换:

void checkPhysicalButton()
{
if (digitalRead(PUSH_BUTTON_1) == HIGH) {
  relay1State =!relay1State;
  digitalWrite(RELAY_PIN_1, relay1State);
  Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);

}

else {
    digitalWrite(RELAY_PIN_1, relay1State);
    Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);

 }}      
因此,我必须使用按钮状态逻辑来移除顺序切换。但我无法将其用作“按下打开,释放关闭”开关。 它就像一个拨动开关——“按一次可打开,再按一次可关闭。” 我想将此逻辑更改为按下打开,释放关闭。请帮助我。谢谢

BLYNK_WRITE(VPIN_BUTTON_1) {
 relay1State = param.asInt();
 digitalWrite(RELAY_PIN_1, relay1State);
}

 void checkPhysicalButton()    
{
 if (digitalRead(PUSH_BUTTON_1) == LOW) {
    // pushButton1State is used to avoid sequential toggles
  if (pushButton1State != LOW) {

  // Toggle Relay state
  relay1State = !relay1State;
  digitalWrite(RELAY_PIN_1, relay1State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);
    }
  pushButton1State = LOW;
  } else {
pushButton1State = HIGH;
}  

嗨@TekTron,提供尽可能多的上下文总是很好的,看起来你正在使用Blynk框架,但你没有指定任何信息,如操作系统、平台等,这里的更多帮助已经更新,请查看。