仅使用Arduino,显示屏和少量按钮,在16x2 LCD上显示日期的准确时钟。无需RTC模块。
硬件部件
最后得到了一个非常准确的时钟。运行5天后,它没有问题。
仅使用Arduino的主要问题是其内部时钟速度并非100%准确。因此,如果仅依赖于此,那么经过的毫秒数将减少一小部分,并且您正在创建的时钟将丢失或浪费时间。我的方法是测试我使用的Arduino的准确性,并确定每小时损失或获得多少毫秒。然后,所需要做的只是对速度调整进行编程,以每小时从内部跟踪的毫秒中增加或减去这种差异。
我的另一个担心是Arduino时钟是否始终不准确,但是如前所述,我编写的时钟在5天内保持了非常准确的时间,因此看来错误是一致的。
第二个问题是内部millis()函数每隔50天左右会重置一次,因此您无法操纵毫秒计数。因此,答案是使用我可以操纵的计数器替换millis()中断,该计数器将计算从午夜起的毫秒数,每天重置一次,以消除任何运行时限制。
为了评估不准确性,我假设我的计算机时钟以及因此Processing中的millis()是准确的。因此,我为Arduino创建了一个程序,每隔2秒将一次握手后经过的毫秒数发送给Processing,并编写了一个脚本供Processing处理以读取它并将其与经过的毫秒数进行比较,以显示实时结果,以及一个小时后的差值。过去。这给出了在一小时内丢失或获得的毫秒数,因此给出了时钟程序中用于速度调整的值。
附件提供了Arduino程序的代码和Processing脚本。