本节咱们学习使用WeMos D1的定时器,使用定时器能够实现定时、延时控制功能、PWM输出、计数以及对外部事件的检测。git
WeMos D1中定时器经过Ticker实现,Ticker是一个定时器库,经过Ticker能够很容易实现定时器功能。当前不建议从Ticker回调函数中阻止IO操做(网络,串行,文件)。 最好在代码回调中设置一个标志,而后在循环函数中检查该标志。github
实例程序开启两个定时器,一个是单次定时,6秒后进入单次定时回调函数,另外一个是循环定时,每隔3秒进入依次回调函数。网络
#include <Arduino.h> #include <Ticker.h> 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()函数,毫秒级延时一样用法,只是定时时间变短。ide
点击上传,设备运行后Log以下所示:函数
从图中可知,咱们如今已经能够正常操做定时器了。oop
本节完,实际操做过程当中须要注意的地方有以下几点:学习
(1) 定时器的定义ui
若是使用多种定时方式,应该多定义结果Ticker类型变量,如图中使用了单次定时和循环定时,也定义了两个变量,分别对应tk和tk1。code
如您在使用过程当中有任何问题,请加QQ群进一步交流,也能够github提Issue。blog
QQ交流群:906015840 (备注:物联网项目交流)
获取源码:关注公众号,回复wemos便可
一叶孤沙出品:一沙一世界,一叶一菩提