步驟1:讀取BCD二進制時鐘
所描述的時鐘使用二進制編碼的十進制(bcd)顯示方法,首先進行描述。在這種方法中,時間的每個數字都被隔離并顯示為二進制數。例如,一分鐘的37分鐘顯示為0000 0011(二進制3)和0000 0100(二進制7)。
每個分段的每個數字(小時,分鐘,秒)占據一列??瞻琢蟹指裘總€對,則使用8列。有時候事情不是很整潔嗎?
步驟2:所需的設備
我使用了Nano,因為我可以將所有東西都放在一塊面包板上。我購買了一個品牌外的產品。
顯示
一個MAX 72xx LED矩陣分支板。請注意,MAX72xx引腳可能因型號而異,請檢查)。
我顛倒安裝了地雷,因此在其控制引腳上使用了公母跳線。
電源,地線和兩條信號線。
小面包板。
我將所有東西都擠在了400針板上。
用于Arduino的電池或交流適配器(未顯示)。
第3步:接線
MAX72xx的五個引腳根據ledControl庫頁面進行接線。我的7219的針腳順序與所述的不同。
VCC-+ 5V
GND--接地
DIN(數據輸入)-D10
CS(在庫中稱為“ LOAD”。)-D11
CLK(時鐘)-D12
時鐘已連接到I2C引腳(檢查您的Arduino模型)。對于Nano 。..
VCC-+ 5V
GND--接地
SCL--模擬5
步驟4:關于算法的注釋
LED矩陣的每一列均表示一位。分離。將小時,分鐘和秒轉換為兩位數是微不足道的。..
通過將小時除以10(沒有余數)來將第一個數字隔離。
將第二個模塊除以10(僅余數)()(僅余數)。
我們點亮一列LED,以對應于適當數字的二進制表示形式。為此,我們使用ledcontrol.h庫的setRow()函數,該函數需要三個參數
矩陣編號(每個實例庫最多可處理8個)。計數從0開始,這就是本草圖中使用的數字,因為我們只有一個矩陣。
列號(從左側開始,編號為0-7)。如所使用的,列0和1分別對應于小時的第一位和第二位數字。
從上到下描述要打開的LED的字節(1 = on)。
小時/分鐘/秒個位數字以十進制整數形式返回值(即0-9)。必須使用byte()函數將它們轉換為所需的字節(二進制)值(以編程方式來說就是“轉換”)。
SetRow(),在我的矩陣上,將LED填充為與輸入/輸出引腳,但最低有效位(“底部”)更靠近輸出引腳-我將其顛倒安裝。 (嘗試使用您自己的矩陣LED)。請注意,您需要按位數學求逆順序,以便將LED矩陣右側向上安裝,如果要橫向安裝LED矩陣,請使用SetColumn函數。
第5步:草圖
第6步:改進和注釋
構建并運行起來后,我發現令人驚訝的是,顯示屏的體積很小,這當然是LED矩陣尺寸的函數。
我有一個座鐘,如果可以找到一個便宜的鐘表的話,我會拉出馬達外殼,用一圈煙熏玻璃或丙烯酸玻璃代替鐘面。 (我將嘗試在當地的自動窗戶著色處停下來并要求報廢)。因此,LED矩陣的電路板和芯片將隱藏起來。另一個可能的方法是切割一個染色或涂漆的木質圓圈,以形成很好的對比度,并在其中切出一個方孔,以刺穿LED面。我懷疑我的卷軸看到了技能,因此,我需要偽造某種邊框。也許是黃銅的臉?我可以使用飛刀,立銑刀或研磨復合物在車床上制作出光滑的光潔度,或在漂亮的渦旋形圖案上進行加工,但需要找出一種方法來在導孔中獲得相對直角,而立銑刀則無法實現, -也許是縱切鋸。
目前,可以通過重新編程Arduino Nano來調整時間,這是最不切實際的??梢蕴砑尤齻€按鈕,每個分段分別為一個小時,分鐘,秒,每個按鈕分別按小時,分鐘和秒,然后按相應的按鈕將當前分段增加一個單位。那是最簡單的編程。但是,一個按鈕會更優雅:長按進入小時數調整模式,短按遞增,等等。
我想將草圖轉移到ATTiny85并收回我的Nano板(也更容易轉移到時鐘盒中。)
-
時鐘
+關注
關注
11文章
1887瀏覽量
132968 -
Arduino
+關注
關注
189文章
6494瀏覽量
190333 -
LED矩陣
+關注
關注
0文章
71瀏覽量
17879
發布評論請先 登錄
評論