我把上次在综合讨论区发的帖子转到技术进阶板块下, 并修复了几个bug。该库支持arduino uno,stm32,esp32等。
受javascript的 setTimeout 和 setInterval启发 实现的延时定时器,代替delay延时。
适合延时时间比较长, 延时精度要求不高的场合
demo代码:
#include <Arduino.h>
#include "cxg_JSTime.h"
//支持arduino uno, stm32, esp32
static JSTime jsTime;
int timeId = 0;
int i = 0;
void setup() {
Serial.begin(115200);
//每隔1s执行一次, 执行三次取消执行
timeId = jsTime.setInterval([]() {
Serial.println("setInterval 1000ms");
i++;
if(i == 3) {
//清除延时执行, clearTime 如果不指定timeId,则全部取消
jsTime.clearTime(timeId);
}
},
1000);
//无阻塞延时2s
jsTime.setTimeout([]() {
Serial.println("setTimeout delay 2000ms");
//延时嵌套
jsTime.setTimeout([]() {
Serial.println("nesting setTimeout delay 1000ms");
},
1000);
},
2000);
}
void loop() {
jsTime.refresh();
}
代码无阻塞延时, 也不用声明一些无意义的时间变量来控制代码了。
setInterval每隔一段时间执行一次,非常适合打印监控信息。
setTimeout执行完毕立即销毁。
CxgJSTime.zip
(2.99 KB, 下载次数: 18)
|