我知道Arduino有三个定时器(timer0,timer1,timer2),一个是16bit,另一个是8位,但我不知道如何使用它们,如果可能,我可以在同一个项目中使用所有三个每个人都有不同的时间间隔,不应该碰撞。我假设我需要一个库来调用它们,但我不知道哪一个。所有计时器都会运行功能而不直接与Pins交互,最短时间间隔将设置为1/3秒,最长时间间隔将从2秒到0.5秒不等。如果有人能给我一个带有三个计时器的草图的例子,我可能会感觉到我需要做什么。
答案 0 :(得分:0)
您可以以间隔的最低公分母间隔运行单个计时器。
要执行此操作您需要有一个存储要触发的事件的堆。然后,无论何时插入或触发事件,都可以通过查看堆顶部来更新计时器,以获取所需的最早事件。如果这比正在运行的任何内容更快,或者没有任何运行,则更新计时器以触发新事件。当事件触发时,您将其从堆中删除。如果你想定期触发,你可以在堆中添加一个新的'time',即now()+ period。
答案 1 :(得分:0)
简短回答是:TimerThree不适用于Arduino UNO!它使用仅包含以下内容的Atmega328 CPU: Timer0(由Arduino代码内部使用millis()), Timer1是16位定时器并且可用, 和Timer2是一个8位定时器。
TimerThree仅适用于ATMEGA2560或类似芯片,因此只适用于Arduino MEGA。
在包含TimerThree的页面上有一个完全错误的描述:首先没有明确声明TimerThree不能与UNO一起工作,更糟糕的是有一个声明,即TimerThree库是'2009年3月修改由JérômeDespatis和Jesse Tane为ATmega328提供支持'这显然是胡说八道。