2012-07-20 18 views
2

我正在研究從不同傳感器讀取數據的arduino項目。我將這些值存儲在一個數組中。問題是我想以不同的速率更新傳感器值。例如,我不想每隔250ms更新一次,而是每隔50ms更新一次。但我希望它能夠在傳感器更新之間運行。我能想到讓它工作的唯一方法是拖延,但這會停止循環。如何以不同的速率更新傳感器值

回答

0

如果你有一堆傳感器來檢查,你可以通過使用Metro library節省一點編碼。與BRM的回答一樣的一般概念。您也可以使用定時器中斷。有關定時器中斷文章鏈接的信息,請參閱我的Move now, don’t delay()博客文章。

0

如果你不不希望使用一個庫,你可以實現它這樣的:

typedef void (*command)(); 

template <unsigned long wait_ms, command c> 
void repeat() { 
    static unsigned long start = millis(); 
    if (millis()-start >= wait_ms) { 
     start += wait_ms; 
     c(); 
    } 
} 

void task1() { 
    // every 50ms 
} 

void task2() { 
    // every 250ms 
} 

void setup() { 
} 


void loop() { 
    repeat< 50, task1>(); 
    repeat<250, task2>(); 
} 

這將只要有什麼東西是「塊」內循環工作。

相關問題