前言

本节我们学习使用WeMos D1的定时器,使用定时器可以实现定时、延时控制功能、PWM输出、计数以及对外部事件的检测。

一、基础知识

1.WeMos D1定时器简介

WeMos D1中定时器通过Ticker实现,Ticker是一个定时器库,通过Ticker可以很容易实现定时器功能。当前不建议从Ticker回调函数中阻止IO操作(网络,串行,文件)。 最好在代码回调中设置一个标志,然后在循环函数中检查该标志。

2. WeMos D1定时器函数说明

wemos D1 arduino物联网开发板应用笔记4-玩转定时器_第1张图片

二、实例

实例程序开启两个定时器,一个是单次定时,6秒后进入单次定时回调函数,另一个是循环定时,每隔3秒进入依次回调函数。

#include 
#include 

Ticker tk, tk1;

int timer_flag = 0;
int count = 0;

void timer_coming_once_cb(void)
{
 Serial.println("time coming only once.");
 tk1.detach();
}

void time_coming_cicyle_cb(void)
{
 timer_flag = 1;
 count++;
}

void setup() {
 Serial.begin(9600);
 tk1.once(6, timer_coming_once_cb);
 // call time_coming_cicyle_cb every 3s
 tk.attach(3, time_coming_cicyle_cb);
}

void loop() {
 if (1 == timer_flag)
 {
 Serial.println("time coming......");
 Serial.println(count);
 timer_flag = 0;

 if (10 == count)
 {
 Serial.println("stop timer");
 tk.detach();
 }
 }
}

上述程序中,使用到了attch(),detach(),once()函数,毫秒级延时同样用法,只是定时时间变短。

三、运行

点击上传,设备运行后Log如下所示:

wemos D1 arduino物联网开发板应用笔记4-玩转定时器_第2张图片

从图中可知,我们现在已经可以正常操作定时器了。

四、结语

1.总结:

本节完,实际操作过程中需要注意的地方有如下几点:

(1) 定时器的定义

如果使用多种定时方式,应该多定义结果Ticker类型变量,如图中使用了单次定时和循环定时,也定义了两个变量,分别对应tk和tk1。

2.后记:

如您在使用过程中有任何问题,请加QQ群进一步交流,也可以github提Issue。

QQ交流群:906015840 (备注:物联网项目交流)

获取源码:关注公众号,回复wemos即可

一叶孤沙出品:一沙一世界,一叶一菩提

wemos D1 arduino物联网开发板应用笔记4-玩转定时器_第3张图片