定时器回调函数怎么写_wemos D1 arduino物联网开发板应用笔记4-玩转定时器

31506015b1f20f6ec747174036b487bb.png

前言

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

一、基础知识

1.WeMos D1定时器简介

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

2. WeMos D1定时器函数说明

564ac398f9e3815af8149c928c340d10.png

二、实例

实例程序开启两个定时器,一个是单次定时,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()函数,毫秒级延时同样用法,只是定时时间变短。

三、运行

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

672cb3178da8234e7636dfdea84a7965.png

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

四、结语

1.总结:

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

(1) 定时器的定义

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值