Arduino 定时器库和剩余时间

Arduino Timer Library and remaining time

我使用这个计时器库:https://github.com/JChristensen/Timer/tree/v2.1

这是一个非常好的库,它工作完美并且使用起来相对简单。但是我需要一个计时器的剩余时间来显示它。

我觉得我错过了什么。

现在,我注意到: 持续时间、出发时间、时间 Arduino 和我做数学运算。

最好的方法是恢复计时器的剩余时间。我认为这是可能的,但我不明白。你能帮帮我吗?

谢谢

查看此库的自述文件,我们可以了解这一切工作的基本方式。

The library does not interfere with the built-in timers, it just uses millis() in a basic type of scheduler to decide when something needs doing.

我不确定您对中断有多少经验,但请务必注意,定时器中断有时可能 "registered" 然后它们就消失了。根据更新调用,这里似乎不是这种情况,似乎这个库实际上只是根据 millis() returns 所需的时间增量注册回调函数。

考虑到这一点,我获取剩余时间的最佳建议是进行与图书馆相同的计算。基本上正常使用该库,但在第一次使用该库时使用 millis() 并继续调用它以自己跟踪增量。

我能找到的唯一其他选项是在调用的 .cpp 中

_events[i].lastEventTime = millis();

不过我还没有找到确切的工作原理。

编辑: 就个人而言,我真的建议您了解硬件计时器的工作原理。它们将使您的项目 运行 更顺利,不太可能崩溃,而且如果您有兴趣了解它们,它们更像是 "real world" 项目的完成方式。

好的,我找到了解决方案:

remaining_time = _events[id].period - (now - _events[id].lastEventTime);

我将 fork 项目以添加此功能。