Button 要将为按钮编码的程序更改为普通开关按钮吗
因此,基本上,我正在为家庭自动化开发一个反馈系统,该系统将连接到你的主板的物理按钮的状态更新到Blynk应用程序上,因此,您可以手动或通过应用程序控制灯光。我使用的是ESP32板。连接到板上的物理按钮的状态被获取,并发送到blynk应用程序上的虚拟按钮,使用blynk I.e param.asInt()的本机逻辑。因此,我无法使用正常开关的逻辑,如: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);
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框架,但你没有指定任何信息,如操作系统、平台等,这里的更多帮助已经更新,请查看。