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