在這個初學者項目中,我們通過構建LED矩陣和使用Arduino來創建二進制時鐘。
本文將向您介紹LED多路復用以及如何利用這種技術構建可用于許多不同項目的LED陣列。在這種特殊情況下,我們將構建一個二進制時鐘。
如何設置LED多路復用
這是一種非常簡單的技術創建LED矩陣,每個二極管可以尋址和打開和關閉。您首先必須決定是要構建共陰極還是共陽極陣列。雖然電路略有不同,但兩種方法基本上都是相似的:

創建LED矩陣的電路圖。
如何尋址各個LED
每個二極管在這個數組中有自己的地址,可以單獨打開和關閉。如果您在尋址LED時遇到問題,可以將上圖中的數組劃分為行和列,并為每個數組分配如下名稱:

通過將電路劃分為行和列來對矩陣內的每個LED進行尋址。
構建二進制時鐘
讓我們把我們的LED陣列使用Arduino Uno打開和關閉LED,DS3231和實時時鐘模塊以便跟蹤時間,從而很好地利用和構建二進制時鐘。
首先構建LED矩陣從上面。它看起來有點亂,但連接LED需要所有跳線:
首先構建LED矩陣。
因為這是一個簡單的LED矩陣,它使用Arduino的十個I/O端口。所以一定要使用有足夠針腳的。如果要減少必要行數,可以使用二進制到十進制轉換。但是,這超出了本文的范圍。
第1行到第4行連接到Arduino引腳2到5,6列連接到引腳6到11.您可以在下面看到這些連接。
將LED連接到Arduino。
固件
首先編寫一個小測試草圖,將矩陣中的每個LED依次打開。如果所有LED都以正確的順序點亮,則陣列連接正確。
voidsetup()
{
pinMode(2,OUTPUT);//1
pinMode(3,OUTPUT);//2
pinMode(4,OUTPUT);//3
pinMode(5,OUTPUT);//4
pinMode(6,OUTPUT);//A
pinMode(7,OUTPUT);//B
pinMode(8,OUTPUT);//C
pinMode(9,OUTPUT);//D
pinMode(10,OUTPUT);//E
pinMode(11,OUTPUT);//F
}
voidloop()
{
for(inti=6;i12;?i++)
{
digitalWrite(i,1);
for(intu=2;u6;?u++)
{
digitalWrite(u,1);
delay(250);
digitalWrite(u,0);
}
digitalWrite(i,0);
}
}
如上所述,主固件連接DS3231 RTC模塊并讀取時間。然后,它將值轉換為二進制,并將相應的LED切換為ON。
您需要從Github下載Arduino IDE庫。固件在本文末尾以可下載的.zip文件的形式提供。上傳代碼后,您的Arduino應顯示正確的時間 - 在此特定示例中,時間為21:45:11。
我們完成的二進制時鐘。
為什么制造商使用LED矩陣?
LED矩陣在許多應用中都非常有用,比如這個簡單的二進制時鐘。重要的是要了解晶體管如何作為開關工作以及如何單獨控制元件陣列中的每個LED。
然而,這種方法遠非完美,因為它占用了許多I/O端口并且受到限制可以同時打開多少個LED。但它很容易理解和構建。
如果你想減少必要的I/O行數,你可以嘗試使用BCD到十進制解碼器,如CD4028B(PDF),你可以看看在其他技術如Charlieplexing,或者你可以使用完全不同的方法(例如,可尋址的LED條)。
利用LED矩陣的其他項目
-
led
+關注
關注
242文章
23472瀏覽量
665641 -
Arduino
+關注
關注
188文章
6479瀏覽量
188680
發布評論請先 登錄
相關推薦
評論