定时器管理方法:
1.停止ticker
void detach();
2.查看ticker是否激活
bool active();
3.启动定时器
/**
* xx秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
*/
void once(float seconds, callback_function_t callback);
/**
* xx秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
* @param arg 回调函数的参数
*/
void once(float seconds, void (*callback)(TArg), TArg arg)
//callback_function_t 定义为:typedef std::function callback_function_t;
4.xxms后只执行一次
/**
* xx毫秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
*/
void once_ms(float seconds, callback_function_t callback)
/**
* xx毫秒后只执行一次
* @param seconds 秒数
* @param callback 回调函数
* @param arg 回调函数的参数
*/
void once_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg);
5.每隔多少秒周期性执行
/**
* 每隔xx秒周期性执行
* @param seconds 秒数
* @param callback 回调函数
*/
void attach(float seconds, callback_function_t callback);
/**
- 每隔xx秒周期性执行
- @param seconds 秒数
- @param callback 回调函数
@param arg 回调函数的参数
*/
void attach(float seconds, void (*callback)(TArg), TArg arg)
5.每隔多少毫秒周期性执行
/**
* 每隔xx毫秒周期性执行
* @param seconds 秒数
* @param callback 回调函数
*/
void attach_ms(float seconds, callback_function_t callback);
/**
- 每隔xx毫秒周期性执行
- @param seconds 秒数
- @param callback 回调函数
@param arg 回调函数的参数
*/
void attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg)
注意:
不建议使用Ticker回调函数来阻塞IO操作(网络、串口、文件);可以在Ticker回调函数中设置一个标记,在loop函数中检测这个标记;
对于arg,必须是 char, short, int, float, void*, char* 之一;
实例:板载LED 0.3s 慢闪,然后 0.1s快闪,最后常亮;
#include <Ticker.h>
Ticker flipper;
int count = 0;
#define LED_BUILTIN D1
void flip() {
int state = digitalRead(LED_BUILTIN); // get the current state of GPIO1 pin
digitalWrite(LED_BUILTIN, !state); // set pin to the opposite state
++count;
// 当翻转次数达到20次的时候,切换led的闪烁频率,每隔0.1s翻转一次
if (count == 20) {
flipper.attach(0.1, flip);
}
// 当次数达到120次的时候关闭ticker
else if (count == 120) {
flipper.detach();
}
}
void setup() {
//LED_BUILTIN 对应板载LED的IO口
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
//每隔0.3s 翻转一下led状态
flipper.attach(0.3, flip);
}
void loop() {
}
因为这个东西比较简单,所以就没有过多的演示怎么用笔记参考博哥的esp8266教程,如果对你有帮助可以赏我几块硬币哦!