1

有没有办法可以使用延迟命令并在后台运行其他东西?

4

4 回答 4

3

有点,如果你使用中断delay自己使用这些。但它不像多线程解决方案那样优雅(这可能是您正在寻找的)。有一个用于 Arduino 的多线程库,但我不确定它的效果如何,或者即使它是否有效。

Arduino 一次只能运行一个线程,这意味着它一次只能一件事。您可以使用中断从字面上中断代码的正常流程,但从技术上讲,它仍然不能同时执行。我链接到的库尝试实现您可能称之为粗略的“超线程”解决方案。两个线程在单个物理处理核心上串联执行。

于 2013-04-23T19:37:52.217 回答
1

如果您需要执行其他代码,则需要学习如何使用millis() 进行编程。这涉及将您的代码从“逐步”执行转换为基于时间的状态机。

例如,如果您希望 LED 闪烁,则该 LED 有两种状态:开和关。当足够的时间过去时,您更改状态。

以下是如何将基于 delay() 的代码转换为基于 millis() 的代码的一系列示例: http ://www.cmiyc.com/blog/2011/01/06/millis-tutorial/

于 2013-04-24T00:27:09.767 回答
0

通常你只需要一个定时器和一个 ISR 例程。如果没有中断,您将无法生存:P在这里您可以找到一个很好的解释。

于 2013-04-23T20:33:18.370 回答
0

我同意 JamesC4S,状态机可能是在您的情况下使用的正确形式。例如,您可以尝试ThingML语言(它使用组件、状态机等),并编译为 Arduino 代码。一个简单的例子可以在这里找到

于 2013-04-29T19:30:12.553 回答