2012-07-20 77 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>(); 
} 

这将只要有什么东西是“块”内循环工作。

相关问题