通过Ticker库可以让esp8266同时执行多个任务
1、如何实现
示例:在实现一个呼吸灯的同时,在串口监视器打印一些字符信息
-
创建 Ticker
对象
-
定时执行某个函数
1 2
| ticker.attach(time, func); ticker.attach_ms(time, func);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <Ticker.h>
Ticker ticker; int count;
void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT);
ticker.attach(1, sayHi); }
void loop() { for (int fadeValue = 0 ; fadeValue <= 1023; fadeValue += 5) { analogWrite(LED_BUILTIN, fadeValue); delay(10); }
for (int fadeValue = 1023 ; fadeValue >= 0; fadeValue -= 5) { analogWrite(LED_BUILTIN, fadeValue); delay(10); } delay(3000); }
void sayHi(){ count++; Serial.print("Hi "); Serial.println(count); }
|
2、其他操作
-
停止执行定时任务:ticker.detach()
-
向定时调用函数传递参数:ticker.attach(1, sayHi, 8)
【注意】:
attach函数所能传递的参数最多只有一个
该参数仅能是以下类型中的一种:char, short, int, float, void*, char*
-
利用多个Ticker对象可以让ESP8266处理多任务