基于Arduino和LED矩陣構(gòu)建二進(jìn)制時(shí)鐘的簡單實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
通過近期的搜集,整理出了這篇如何使用Arduino和LED矩陣構(gòu)建簡單的二進(jìn)制時(shí)鐘。
本文將向您介紹LED多路復(fù)用以及如何利用這種技術(shù)構(gòu)建可用于許多不同項(xiàng)目的LED陣列。在這種特殊情況下,我們將構(gòu)建一個(gè)二進(jìn)制時(shí)鐘。
如何設(shè)置LED多路復(fù)用
這是一種非常簡單的技術(shù)創(chuàng)建LED矩陣,每個(gè)二極管可以尋址和打開和關(guān)閉。您首先必須決定是要構(gòu)建共陰極還是共陽極陣列。雖然電路略有不同,但兩種方法基本上都是相似的:
創(chuàng)建LED矩陣的電路圖。
As你可以看到,我們正在為這個(gè)項(xiàng)目建立一個(gè)共同的陰極矩陣。因此,LED的陰極連接在一起,然后通過NPN晶體管連接到GND。電阻R1至R4是LED的限流電阻,R5至R10是晶體管。
如何尋址各個(gè)LED
每個(gè)二極管在這個(gè)數(shù)組中有自己的地址,可以單獨(dú)打開和關(guān)閉。如果您在尋址LED時(shí)遇到問題,可以將上圖中的數(shù)組劃分為行和列,并為每個(gè)數(shù)組分配如下名稱:
通過將電路劃分為行和列來對(duì)矩陣內(nèi)的每個(gè)LED進(jìn)行尋址。
要打開LED9,需要在晶體管D的基極提供電壓,并將線路3連接到電源。您可以通過在當(dāng)前激活的LED之間快速切換來使其看起來像多個(gè)LED一樣。
構(gòu)建二進(jìn)制時(shí)鐘
讓我們把我們的LED陣列使用Arduino Uno打開和關(guān)閉LED,DS3231和實(shí)時(shí)時(shí)鐘模塊以便跟蹤時(shí)間,從而很好地利用和構(gòu)建二進(jìn)制時(shí)鐘。
首先構(gòu)建LED矩陣從上面。它看起來有點(diǎn)亂,但連接LED需要所有跳線:
首先構(gòu)建LED矩陣。
第1行到第4行連接到Arduino引腳2到5,6列連接到引腳6到11.您可以在下面看到這些連接。
將LED連接到Arduino。
固件
首先編寫一個(gè)小測試草圖,將矩陣中的每個(gè)LED依次打開。如果所有LED都以正確的順序點(diǎn)亮,則陣列連接正確。
void setup()
{
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
}
void loop()
{
for(int i = 6; i < 12; i++)
{
digitalWrite(i, 1);
for(int u = 2; u < 6; u++)
{
digitalWrite(u, 1);
delay(250);
digitalWrite(u, 0);
}
digitalWrite(i, 0);
}
}如上所述,主固件連接DS3231 RTC模塊并讀取時(shí)間。然后,它將值轉(zhuǎn)換為二進(jìn)制,并將相應(yīng)的LED切換為ON。
您需要從Github下載Arduino IDE庫。固件在本文末尾以可下載的.zip文件的形式提供。上傳代碼后,您的Arduino應(yīng)顯示正確的時(shí)間 - 在此特定示例中,時(shí)間為21:45:11。
我們完成的二進(jìn)制時(shí)鐘。
為什么制造商使用LED矩陣?
LED矩陣在許多應(yīng)用中都非常有用,比如這個(gè)簡單的二進(jìn)制時(shí)鐘。重要的是要了解晶體管如何作為開關(guān)工作以及如何單獨(dú)控制元件陣列中的每個(gè)LED。
然而,這種方法遠(yuǎn)非完美,因?yàn)樗加昧嗽S多I/O端口并且受到限制可以同時(shí)打開多少個(gè)LED。但它很容易理解和構(gòu)建。
如果你想減少必要的I/O行數(shù),你可以嘗試使用BCD到十進(jìn)制解碼器,如CD4028B(PDF),你可以看看在其他技術(shù)如Charlieplexing,或者你可以使用完全不同的方法(例如,可尋址的LED條)。