|
本帖最后由 ws9528 于 2019-10-26 12:05 编辑
使用这个库的目的:多任务在不同的时间,各做各的事互不干扰。比如,我想2秒种检查一下网络状态,想5秒检查一下服务器状态,想1秒获取一下传感器温度,想3秒把温度发送到服务器上,有了这个定时器,就方便多了,各做各的。互不影响。
软件环境: Arduino IDE
硬件环境:NodeMCU 5个LED灯
Ticker库是内置库 不用在网上找,不用下载安装,可直接引用。
链接方式如下图
[mw_shl_code=arduino,true]//定义 5个LED灯所使用的针脚
const int led8 = D8;
const int led7 = D7;
const int led6 = D6;
const int led5 = D5;
const int led4 = D4;
//########## 第一步:引用Ticker定时执行库 ####################
#include <Ticker.h>
//########## 第二步:实例化库,生成5个新对象 ####################
Ticker Ding_Shi_Qi_8;
Ticker Ding_Shi_Qi_7;
Ticker Ding_Shi_Qi_6;
Ticker Ding_Shi_Qi_5;
Ticker Ding_Shi_Qi_4;
//########## 第三步:编写上面5个新对象要调用的5个函数 ####################
void led8_Ding_Shi()
{
int state = digitalRead(led8); // 获取led8的当前状态
digitalWrite(led8, !state); // 将led8设置为相反的状态
}
void led7_Ding_Shi()
{
int state = digitalRead(led7);
digitalWrite(led7, !state);
}
void led6_Ding_Shi()
{
int state = digitalRead(led6);
digitalWrite(led6, !state);
}
void led5_Ding_Shi()
{
int state = digitalRead(led5);
digitalWrite(led5, !state);
}
void led4_Ding_Shi()
{
int state = digitalRead(led4);
digitalWrite(led4, !state);
}
void setup()
{
pinMode(led8, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led4, OUTPUT);
//########## 第四步:用实例化的名称调用对应的函数 ####################
Ding_Shi_Qi_8.attach(0.1, led8_Ding_Shi);
Ding_Shi_Qi_7.attach(0.2, led7_Ding_Shi);
Ding_Shi_Qi_6.attach(0.3, led6_Ding_Shi);
Ding_Shi_Qi_5.attach(0.4, led5_Ding_Shi);
Ding_Shi_Qi_4.attach(0.5, led4_Ding_Shi);
}
void loop() {}[/mw_shl_code]
常用方法
void attach(float seconds, callback_t callback)
void attach(float seconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务会反复执行,输入参数分别为时间间隔(秒)、回调函数、不大于四字节的数据;
void attach_ms(uint32_t milliseconds, callback_t callback)
void attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务会反复执行,输入参数分别为时间间隔(毫秒)、回调函数、不大于四字节的数据;
void once(float seconds, callback_t callback)
void once(float seconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务只执行一次,输入参数分别为时间间隔(秒)、回调函数、不大于四字节的数据;
void once_ms(uint32_t milliseconds, callback_t callback)
void once_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg)
设置调度任务,该任务只执行一次,输入参数分别为时间间隔(毫秒)、回调函数、不大于四字节的数据;
void detach()
停止任务调度;
|
|