2013-02-17 84 views
2

我有一個關於在Arduino中運行循環的問題。我編寫了一個Arduino,以便它慢慢消失在LED中,我想添加一個在程序運行時閃爍的LED。我可以改變整個程序,並將LED閃爍在所有線路之間,但我想知道是否有辦法可以單獨完成?是否有可能在void setup()下運行一個循環,或者運行一個循環,然後繼續運行第一個循環,然後繼續下一個循環?在Arduino上運行程序時連續運行循環?

閃爍的光線當然不是很重要,但我只是好奇它是否可以完成。

+0

謝謝你的答案! – kajdehoop 2013-02-18 11:19:32

回答

0

當然。最優雅的解決方案是設置一個獨立於主運行循環的定時器,並使用其中斷處理程序向量來打開和關閉LED。這樣,您就可以精確地控制閃爍的頻率,而且您不必擔心主循環的速度有多快或多慢(如果您隨時間添加或移除昂貴的計算代碼,可能會發生相當大的變化)。

0

你不能有兩個或多個獨立的迴路同時運行,但你可以實現像這樣的東西同樣的效果:

void do_stuff_0(); 
void do_stuff_1(); 

unsigned long last_millis_0 = 0; 
unsigned long last_millis_1 = 0; 

const unsigned long delay_0 = ...; 
const unsigned long delay_1 = ...; 

void loop() 
{ 
    now = millis(); 

    if ((now - last_millis_0) >= delay_0) { 
    last_millis_0 = now; 
    do_stuff_0(); 
    } 
    if ((now - last_millis_1) >= delay_1) { 
    last_millis_1 = now; 
    do_stuff_1(); 
    } 
    ... 
} 

這僅僅是爲了說明,你很可能希望使用一個抽象的庫,如metro