在loop里调用Blinker.run()后就可以一直执行Blinker的其它函数吗
时间: 2024-04-20 09:25:00 浏览: 127
是的,在`loop()`函数中调用`Blinker.run()`可以实现持续执行Blinker库的其他函数。
`Blinker.run()`是Blinker库的核心函数,它会处理与Blinker云平台之间的通信,并执行相应的操作。通过在`loop()`函数中反复调用`Blinker.run()`,你可以确保你的设备能够与云平台保持连接,并能够实时接收和发送数据。
除了`Blinker.run()`之外,你还可以使用其他Blinker库提供的函数来实现不同的功能,比如发送传感器数据、接收云端命令等。这些函数可以在`loop()`函数中根据需要进行调用。
需要注意的是,在调用`Blinker.run()`之前,你需要确保已经连接到了Wi-Fi网络,并且设备已经注册到了Blinker云平台。这样才能确保正常的通信和功能运行。
相关问题
volatile int soil; BlinkerNumber Number1("num-abc");//土壤湿度数据 void dataStorage(){ Blinker.dataStorage("num-abc", soil); //数据储存 } void setup(){ Blinker.begin(auth,ssid,pswd); //初始化数据 soil = 0; Blinker.attachDataStorage(dataStorage); } void loop(){ soil = analogRead(33); //33口的模拟量 delay(100); Number1.print(soil); //数据上传 Blinker.run(); }
这是一个使用Blinker库和ESP32开发板获取土壤湿度数据并上传到Blinker云端的示例代码。
首先,在开头定义了一个volatile类型的整型变量soil,用来存储读取到的土壤湿度数据。然后定义了一个名为Number1的BlinkerNumber类型对象,用来上传数据到Blinker云端的num-abc数据点。
在setup函数中,调用了Blinker.begin函数,进行Blinker库和ESP32开发板的初始化。初始化完成后,将soil变量初始化为0,并将dataStorage函数与Blinker.attachDataStorage函数进行绑定,以实现数据的持久化存储。
在loop函数中,使用analogRead函数读取33口的模拟量数据,并将读取到的数据存储到soil变量中,然后使用Number1.print函数将soil数据上传到Blinker云端的num-abc数据点中。最后调用Blinker.run函数,处理Blinker库中的事件。
需要注意的是,本示例代码中只上传了一个数据点,如果需要上传更多的数据点,可以使用BlinkerNumber、BlinkerSwitch、BlinkerButton等类型的对象进行上传。
#include <Blinker.h> char auth[] = "Your_AuthKey"; char ssid[] = "Your_SSID"; char pswd[] = "Your_PASSWORD"; BlinkerButton btn1("btn-abc"); void button1_callback(const String & state) { Serial.println("button1 state: " + state); digitalWrite(LED_BUILTIN, state.toInt()); } void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); Blinker.begin(auth, ssid, pswd); btn1.attach(button1_callback); } void loop() { Blinker.run(); }
这是一个使用Blinker库控制ESP8266的示例代码,其中定义了一个名为btn1的按钮,当按钮状态改变时会调用button1_callback函数,函数会打印按钮状态并控制板子上的LED灯亮灭。在setup函数中,首先开启串口通信并初始化LED灯状态,然后调用Blinker.begin函数连接WiFi并注册设备,最后附加按钮回调函数。在loop函数中,调用Blinker.run函数以接收来自Blinker云端的指令。
阅读全文