僅使用Arduino,顯示屏和少量按鈕,在16x2 LCD上顯示日期的準(zhǔn)確時(shí)鐘。無(wú)需RTC模塊。
硬件部件
- Arduino Nano R3 × 1個(gè)
- 字母數(shù)字LCD,16 x 2 × 1個(gè)
- 觸覺開關(guān),頂部致動(dòng) × 3
- 微調(diào)電位器,10 kohm × 1個(gè)
- 跳線× 1個(gè)
最后得到了一個(gè)非常準(zhǔn)確的時(shí)鐘。運(yùn)行5天后,它沒有問(wèn)題。
僅使用Arduino的主要問(wèn)題是其內(nèi)部時(shí)鐘速度并非100%準(zhǔn)確。因此,如果僅依賴于此,那么經(jīng)過(guò)的毫秒數(shù)將減少一小部分,并且您正在創(chuàng)建的時(shí)鐘將丟失或浪費(fèi)時(shí)間。我的方法是測(cè)試我使用的Arduino的準(zhǔn)確性,并確定每小時(shí)損失或獲得多少毫秒。然后,所需要做的只是對(duì)速度調(diào)整進(jìn)行編程,以每小時(shí)從內(nèi)部跟蹤的毫秒中增加或減去這種差異。
我的另一個(gè)擔(dān)心是Arduino時(shí)鐘是否始終不準(zhǔn)確,但是如前所述,我編寫的時(shí)鐘在5天內(nèi)保持了非常準(zhǔn)確的時(shí)間,因此看來(lái)錯(cuò)誤是一致的。
第二個(gè)問(wèn)題是內(nèi)部millis()函數(shù)每隔50天左右會(huì)重置一次,因此您無(wú)法操縱毫秒計(jì)數(shù)。因此,答案是使用我可以操縱的計(jì)數(shù)器替換millis()中斷,該計(jì)數(shù)器將計(jì)算從午夜起的毫秒數(shù),每天重置一次,以消除任何運(yùn)行時(shí)限制。
為了評(píng)估不準(zhǔn)確性,我假設(shè)我的計(jì)算機(jī)時(shí)鐘以及因此Processing中的millis()是準(zhǔn)確的。因此,我為Arduino創(chuàng)建了一個(gè)程序,每隔2秒將一次握手后經(jīng)過(guò)的毫秒數(shù)發(fā)送給Processing,并編寫了一個(gè)腳本供Processing處理以讀取它并將其與經(jīng)過(guò)的毫秒數(shù)進(jìn)行比較,以顯示實(shí)時(shí)結(jié)果,以及一個(gè)小時(shí)后的差值。過(guò)去。這給出了在一小時(shí)內(nèi)丟失或獲得的毫秒數(shù),因此給出了時(shí)鐘程序中用于速度調(diào)整的值。
附件提供了Arduino程序的代碼和Processing腳本。