前言
本節我們學習使用WeMos D1的定時器,使用定時器可以實現定時、延時控制功能、PWM輸出、計數以及對外部事件的檢測。
一、基礎知識
1.WeMos D1定時器簡介
WeMos D1中定時器通過Ticker實現,Ticker是一個定時器庫,通過Ticker可以很容易實現定時器功能。當前不建議從Ticker回調函數中阻止IO操作(網絡,串行,文件)。 最好在代碼回調中設置一個標誌,然後在循環函數中檢查該標誌。
2. WeMos D1定時器函數說明
二、實例
實例程序開啓兩個定時器,一個是單次定時,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如下所示:
從圖中可知,我們現在已經可以正常操作定時器了。
四、結語
1.總結:
本節完,實際操作過程中需要注意的地方有如下幾點:
(1) 定時器的定義
如果使用多種定時方式,應該多定義結果Ticker類型變量,如圖中使用了單次定時和循環定時,也定義了兩個變量,分別對應tk和tk1。
2.後記:
如您在使用過程中有任何問題,請加QQ羣進一步交流,也可以github提Issue。
QQ交流羣:906015840 (備註:物聯網項目交流)
獲取源碼:關注公衆號,回覆wemos即可
一葉孤沙出品:一沙一世界,一葉一菩提