#include <Ticker.h>
/*
start(): 启动定时器。定时器启动后会根据设定的周期开始计时。
stop(): 暂停定时器。定时器会记住逝去的时间,可以通过 resume() 继续。
resume(): 从暂停处继续定时器。
update(): (AVR平台必需) 这是最重要的函数!你必须在 loop() 函数中持续调用每个 Ticker 对象的 update() 方法。它负责检查时间是否已到,并决定是否要执行你的回调函数。忘记调用 update() 是 Ticker 在AVR平台上不工作的最常见原因! (在ESP8266/ESP32上,此过程通常是自动的,无需手动调用)。
interval(ms): 更改定时器的周期。
state(): 返回定时器的状态(STOPPED, RUNNING, PAUSED)。
*/
uint8_t ledPin1 = 13;
uint8_t ledPin2 = 12;
int ledStat1 = 0;
volatile int ledStat2 = 0;
void callBack1(){
digitalWrite(ledPin1,ledStat1++);
ledStat1 %= 2;
}
void callBack2(){
digitalWrite(ledPin2,ledStat2++);
ledStat2 %= 2;
}
void callBack3(){
Serial.println(millis());
}
Ticker ticker1(callBack1,1000);
Ticker ticker2(callBack2,500);
// Ticker(callback_function, interval, repeat_count, resolution)
/*
callback_function: 你希望定时器调用的函数。
interval: 调用周期,单位由 resolution 决定。
repeat_count: (可选) 重复次数,0 或 INFINITE 表示无限重复。
resolution: (可选) 时间单位,MILLIS (毫秒) 或 MICROS (微秒)。默认是 MILLIS。
*/
Ticker ticker3(callBack3,500,5);
void setup() {
Serial.begin(115200);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
// 每0.5秒调用callback1:
ticker1.start();
ticker2.start();
ticker3.start();
}
void loop() {
// put your main code here, to run repeatedly:
ticker1.update();
ticker2.update();
ticker3.update();
}