2014-12-03 219 views
0

的序列只是想知道,在給定的例子:Timer.h庫中的Arduino,我使用圖書館Timer.h作品

#include "Timer.h" 

Timer t; 
int pin = 13; 

void setup() 
{ 
    Serial.begin(9600); 
    pinMode(pin, OUTPUT); 
    t.oscillate(pin, 100, LOW); 
    t.every(1000, takeReading); 
} 

void loop() 
{ 
    t.update(); 
} 

void takeReading() 
{ 
    Serial.println(analogRead(0)); 
} 

在每一秒,Arduino的必須在擺動銷13上工作,並且還要在同一時刻/時刻起作用takeReading()。由於Arduino只有single threading,我不知道哪項工作是首先進行的?好像在圖書館博客中未說明..

如果takeReading()是一個長期的功能是什麼?振盪將不準確,對吧?

回答

0

源代碼可供閱讀。

「事件時鐘」並不完全準確,在時間上。該模塊依賴於在Arduino循環()中定期調用update()。如果循環中發生其他事情,或者某個功能正在忙着等待或延遲,那麼事件將會遲到。

至於哪一個被先叫,該事件被稱爲在創建它們的順序。它們本質上是一系列事件。 update()函數遍歷數組中的每個事件,並在足夠的時間過後運行回調函數。

如果你想準確的計時,你總是可以設置使用其他定時器中斷自己。雖然這個模塊看起來非常簡單直觀。