问题描述
我需要什么 如何使用 ESP32 以正确的方式从 Thingspeak 读取和写入数据。
设置:
我正在开发一个基于 ESP32 的项目,我正在控制 5 个交流电源灯,每个灯都有自己的按钮。该项目可以使用触摸屏 Nextion 显示器进行远程控制,该显示器再次由另一个 ESP32 控制。灯光状态(开/关)数据存储在 Thingspeak 云上。
问题: 由于可以使用按钮手动控制灯,也可以通过 Thingspeak 远程使用触摸屏控制灯,因此我很难设计读写架构。
目前我正在 ESP32 上使用按钮库 (JC_Button.h) 的去抖动运行代码。按钮状态的每次变化都会触发开关灯的开/关并更新云上的状态。类似地,有一个函数可以从云端接收状态并更新灯的开/关。问题是我无法正确设计系统,我可以清楚地显示无缝管理读写控制。
我不知道如何设计架构,以便当我按下按钮以及有人远程监视和控制设置时,我的读写 LED 状态在灯上正确可见。
代码片段 ...
int deBounceState1 = 0; /* If there is change in push button state,block reading data from cloud -> Update cloud with new status ->
Read data from cloud and set the light state*/
int state0,state1,state2,state3 = 0; // Variable to store state of lights
int stateR0,stateR1,stateR2,stateR3 = 0; // Read light state from cloud
...
//Function that reads button state
btn1.read(); // Reads the state of the button
if (btn1.changed()) {
deBounceState1 = 1;
digitalWrite(light1,btn1.toggleState());
//Serial.println("Button 1 pressed............");
state0=btn1.toggleState();
//Serial.println(state0);
} else {
deBounceState1 = 0;
//Serial.println(state0);
//Serial.println("Button 1 no change");
}
...
void loop() {
deBounce();
if (deBounceState1==1 || deBounceState2==1 || deBounceState3 ==1 || deBounceState4 ==1){
controlOutput();
delayLoop();
}
}
...
void delayLoop() {
static long currentMillis;
static byte statCounter = 0;
if (millis() - currentMillis >= interval)
{
if (statCounter> 10)
{
statCounter = 0;
stateChangeUpdate();
deBounceState1=0;
deBounceState2=0;
deBounceState3=0;
deBounceState4=0;
readChannel();
}
statCounter++;
Serial.println(statCounter);
currentMillis = millis();
}
}
...
我知道这些信息不足以解释问题,但请随时提出问题。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)