如何利用WS2812構(gòu)建模擬時鐘
雖然出于某些原因,大多數(shù)時鐘都是用數(shù)字顯示時間的,但顯示指針的時鐘仍然有一些魅力。
上面顯示的時間是09:19:11
使用指針的時鐘通常被稱為模擬時鐘,盡管不包括模擬元件。這個時鐘甚至沒有指針,它只是通過使用Neopixel模塊來顯示它們指向的位置,該模塊呈圓形,帶有60個WS2812 led。事實上,它們分為四個部分,你必須把它們焊接在一起。
在這種情況下,它使用由Mainflingen(法蘭克福附近)的發(fā)射機以77.5 kHz的頻率分配的時間信號,該信號可以由便宜的DCF77接收器模塊接收。雖然有很多庫可以解碼該信號,但我開發(fā)了自己的代碼。關(guān)鍵是,你必須檢測脈沖傳輸?shù)拈_始時間和結(jié)束時間。這是由該脈沖調(diào)用的中斷服務(wù)例程(ISR)完成的。當(dāng)它被上升信號觸發(fā)時,下一個觸發(fā)原因必須設(shè)置為下降,反之亦然。所以ISR改變了中斷本身的原因。這只是真實ISR的一個簡短摘錄:
接收和解碼時間信號至少需要一分鐘,甚至更多。在DCF77標(biāo)準戰(zhàn)爭推出的時候,空氣中沒有太多的電磁噪聲,但現(xiàn)在有很多設(shè)備(合法的和非法的)會產(chǎn)生紊亂,如果你能收到清晰的信號就很幸運了。
在我的項目中,時鐘面顯示為藍色,而它仍在等待一個完整的有效傳輸,當(dāng)檢測到有效傳輸時顯示為綠色。當(dāng)檢測到錯誤時,內(nèi)部時鐘將繼續(xù)運行,這將通過顯示紅色鐘面來指示。
“秒針”用紅色LED指示,“分針”用綠色LED指示,“時針”用藍色LED指示。為了更容易找到分鐘,LED會閃爍。
該代碼提供使用UNO-R3(在本例中為NANO)或UNO-R4(在本例中為所有IO引腳提供額外頭的R4克隆)微控制器和具有任何極性的dcf77模塊。微控制器和天線之間應(yīng)該有一定的最小距離,因為控制器本身會產(chǎn)生一些影響接收質(zhì)量的噪聲。
必須承認,使用R4是一個完全的過度殺傷。
RAM和ROM使用情況:
ROM: R3: 6192字節(jié)(19%),R4: 42404字節(jié)(16%)
內(nèi)存:R3: 639字節(jié)(31%),R4: 4092字節(jié)(12%)
當(dāng)將分段安裝到電路板上時,您可能希望電路板頂部的LED數(shù)字為零,對應(yīng)于眾所周知的時鐘,其中12位于頂部位置。在下面的圖片中,白色的線是水平和垂直的線。
所以兩個部分之間的連接處必須旋轉(zhuǎn)3度才能達到這個效果就像黑線顯示的那樣。
本文編譯自hackster.io