本節咱們學習使用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便可
一葉孤沙出品:一沙一世界,一葉一菩提