第1步:時(shí)鐘程序功能
關(guān)于時(shí)鐘的某些軟件功能的一些評(píng)論。
時(shí)間設(shè)置:許多使用rtc的Arduino示例在設(shè)置時(shí)間方面都很隨意。他們經(jīng)常使用草圖的編譯時(shí)間來(lái)設(shè)置rtc(如果尚未設(shè)置)。由于您不知道編譯和下載需要多長(zhǎng)時(shí)間,這很笨拙,如果先前已設(shè)置時(shí)鐘,則時(shí)間不會(huì)更新。
我在代碼中放了一個(gè)標(biāo)志(KBSetTime = true | false),如果在下載時(shí)設(shè)置,將導(dǎo)致打開(kāi)一個(gè)串行窗口并提示輸入時(shí)間。按下輸入時(shí),時(shí)間精確設(shè)置為rtc。
準(zhǔn)確度:DST3231模塊的指定精度為+/- 2 ppm,在常溫下每年約1分鐘。為了校正這種漂移,提供了“碰撞”按鈕。我們的想法是,當(dāng)您聽(tīng)到通過(guò)收音機(jī)廣播的時(shí)間源信號(hào)點(diǎn)數(shù)時(shí),按下按鈕按鈕并將時(shí)間調(diào)整為“時(shí)間最高”。為了防止手指徘徊,我將此功能限制為僅在一小時(shí)內(nèi)的五到五個(gè)范圍內(nèi)有效。
夏令時(shí):有問(wèn)題!時(shí)鐘沒(méi)有同步到任何可識(shí)別DST的外部源,因此沒(méi)有辦法自動(dòng)調(diào)整,就像電話會(huì)因?yàn)樗B接到網(wǎng)絡(luò)塔而做。在舊版本的Windows中,他們只使用一個(gè)文件,其中包含日期,指定何時(shí)發(fā)生更改,為此您需要事先知道并確定更改日期 - 我們走了多遠(yuǎn),預(yù)期壽命是多少時(shí)鐘,如果我們移動(dòng)司法管轄區(qū)怎么辦?其他方法依賴于固定的規(guī)范,例如3月的第2個(gè)星期日,但這也有問(wèn)題 - 不是每個(gè)地方同時(shí)調(diào)整,特殊事件可能會(huì)移動(dòng)這個(gè)“固定”的變化點(diǎn)。出于這些原因,我決定采用不同的方法讓用戶輕松進(jìn)行調(diào)整 - 設(shè)置滑動(dòng)開(kāi)關(guān)以指定進(jìn)入或退出夏令時(shí),然后按下按鈕。這將在當(dāng)前時(shí)間恰好增加或減少一小時(shí)。保留日期的準(zhǔn)確性,以防你在23:45小時(shí)進(jìn)行。
擴(kuò)展:時(shí)鐘顯示為12h格式,有四個(gè)LED小時(shí),最大值為8 + 4 + 2 + 1 = 15,因此如果需要24小時(shí)格式,您可以添加額外的LED?;蛘撸梢蕴砑又甘旧衔缁蛳挛绲姆绞?。軟件庫(kù)和時(shí)鐘模塊的接口都可以在需要時(shí)輕松實(shí)現(xiàn)這些。
第2步:位和塊 - 片斷
Arduino世界有一系列有趣的位,都非常顯著便宜從ebay,ali barber等。還有很多指導(dǎo)和建議。這是我用過(guò)的東西;
Nano arduino,便宜,功能強(qiáng)大,具有教育意義 - 該項(xiàng)目最終使用了約80%的代碼空間
DS3231 - 實(shí)時(shí)時(shí)鐘模塊,可維持時(shí)間,2 ppm精度約為1分鐘/年
WS8212 LED - 串行控制LED,3線,單個(gè)LED顏色由3字節(jié)RGB字符串設(shè)置
其他開(kāi)關(guān),按鈕 - 帶連接器的電源適合Arduino
使用電容式觸摸開(kāi)關(guān)可能更好按鈕。一個(gè)例子是TTP223
關(guān)于DS3231 rtc模塊的注意事項(xiàng):如果你使用像鋰電池那樣的鋰電池(大多數(shù)人會(huì)),你需要切斷模塊上的電池充電痕跡?;ヂ?lián)網(wǎng)搜索將揭示信息和原因。上圖說(shuō)明了要切割的痕跡。
步驟3:接線
該圖顯示了接線連接。
第4步:代碼
此處顯示代碼,您只需下載并使用它即可。你需要安裝Arduino環(huán)境。
希望它被充分評(píng)論,允許任何具有一些Arduino技能的人來(lái)跟蹤和修改。
Arduino世界有許多智能民間的圖書(shū)館讓我們其他人可以輕松使用設(shè)備。沒(méi)有必要重新發(fā)明輪子,所以我使用了以下庫(kù);
TimeLib.h - 用于時(shí)間函數(shù)的使用和管理
DS3223RTC.h - 用于訪問(wèn)rtc模塊
Adafruit_NeoPixel.h - 用于使用串行LED
DHT.h - 用于濕度和溫度傳感器
Streaming.h - 便于與串行窗口交互
U8glib.h - 用于Oled顯示
使用了IC2總線,它內(nèi)置于Arduino,rtc和oled模塊以及相關(guān)的庫(kù)中 - 由于上面提到的庫(kù),它們對(duì)使用都是透明的
中斷。這些用于碰撞到小時(shí)和夏令時(shí)調(diào)整例程。前者因?yàn)樗枰詴r(shí)間關(guān)鍵的方式發(fā)生而后者因?yàn)樗唤?jīng)常使用。
每個(gè)顯示特征的顯示時(shí)間的暫停延遲可以通過(guò)show_xxxx_delay常量來(lái)調(diào)整。例如,顯示的紅色溫度LED被設(shè)置為4000毫秒或4秒
const unsigned long show_temp_delay = 4000;
顏色的變化可以通過(guò)編輯線條來(lái)實(shí)現(xiàn) - 它只是每個(gè)00的三個(gè)十六進(jìn)制值。 RGB的ff
#define Yellow leds.Color(0xff, 0xff, 0x00) // colour for day display
步驟5:木工
我開(kāi)始在車庫(kù)里放一塊松木,切成一定長(zhǎng)度如所須。大理石位于凹陷的口袋中,因此從正面鉆出一個(gè)更大的孔,大理石的直徑達(dá)到您想要的深度,然后鉆一個(gè)小孔,讓光線看到大理石的背面。鉆孔后,我使用了一個(gè)插入式路由器從后部劃出一個(gè)口袋來(lái)容納電子設(shè)備。
我在頂部表面上切了一個(gè)小凹槽,這樣Oed顯示器就會(huì)齊平。
后面的部分被切割成適合按鈕和DHT傳感器的尺寸。
我用自制的污漬混合物對(duì)松樹(shù)進(jìn)行染色并涂上一層蠟以產(chǎn)生緞面效果
步驟6:電子裝配
《我將LED安裝在一條木條上 - 這主要是為了讓它們更容易處理,因?yàn)槲艺谕嫠:驮椭谱?。他們需要連接5V,0V和數(shù)據(jù)。來(lái)自arduino的數(shù)據(jù)引腳連接必須首先到達(dá)一分鐘,因?yàn)長(zhǎng)ED是通過(guò)字符串中的位置來(lái)尋址的。 8小時(shí)led是字符串中的最后一個(gè),并且不需要終結(jié)器。
鉆幾個(gè)孔,將開(kāi)關(guān)和傳感器安裝在后面板上。熱膠可用于將物品固定到位。為這些設(shè)備使用觸摸開(kāi)關(guān)可能更好。
Arduino和rtc模塊安裝在配線板上。這樣可以更容易地將所有東西焊接在一起。鏈接由單股銅線制成。
帶狀電纜提供與后面板安裝的開(kāi)關(guān)和傳感器的完美連接,并允許打開(kāi)外殼。
在LED燈條之間使用一塊牛奶瓶塑料和補(bǔ)丁板,以防止任何短路。
擰緊背部,你就完成了。時(shí)鐘可以通過(guò)USB端口從計(jì)算機(jī)或插頭包裝到墻上。沒(méi)有USB電源,沒(méi)有顯示器,但rtc模塊上的電池可以保持時(shí)間。
在光線昏暗的房間里享受它,并對(duì)訪客進(jìn)行測(cè)驗(yàn),因?yàn)樗缘男问轿艘恍┳⒁饬Α?“那是什么???”
-
led
+關(guān)注
關(guān)注
242文章
23847瀏覽量
674179 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
807瀏覽量
42333 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1901瀏覽量
133241
發(fā)布評(píng)論請(qǐng)先 登錄
告別傳統(tǒng)局限!大理石直線電機(jī)模組的顛覆性優(yōu)勢(shì)

評(píng)論