步驟1 :組裝并連接矩陣
您無(wú)需花很多功夫,就可以將Arduino稱為出色的多個(gè)LED矩陣。但是,在這種情況下,將第五個(gè)矩陣與其他矩陣串聯(lián)。當(dāng)然,您將需要一個(gè)矩陣和另一組跳線。
步驟2:實(shí)時(shí)時(shí)鐘注釋
我的實(shí)時(shí)時(shí)鐘(RTC)已打開(kāi)原來(lái)是啞巴,新的還沒(méi)有從香港來(lái)。因此,時(shí)間是手動(dòng)設(shè)置的。時(shí)間是使用內(nèi)部時(shí)鐘來(lái)保持的。
步驟3:顯示數(shù)字
這是我的第一個(gè)重要項(xiàng)目,在學(xué)習(xí)過(guò)程中,我從在其4-LED滾動(dòng)文本示例中使用的Makepeace Madrid的LED矩陣庫(kù)LedControlMS.h開(kāi)始。
函數(shù)displayChar帶有兩個(gè)整數(shù)參數(shù):尋址的矩陣號(hào)(從零開(kāi)始)和要顯示的字符。只需將數(shù)字0-9傳遞給此功能即可顯示這些數(shù)字。
由于一個(gè)LED矩陣不會(huì)顯示兩個(gè)字符,因此小時(shí)和分鐘的每個(gè)數(shù)字都必須隔離為一個(gè)變量。可以通過(guò)以下方式將它們與小時(shí)和分鐘分開(kāi):
第一個(gè)數(shù)字:整數(shù)除以10。這將丟棄余數(shù)(例如,將43除以4.3,結(jié)果除以3) ,因此返回4(第一個(gè)數(shù)字)。
第二個(gè)數(shù)字:模除以10,返回余數(shù)(例如,對(duì)43進(jìn)行除法得到3)。
我認(rèn)為空白的第一個(gè)數(shù)字看起來(lái)比前導(dǎo)零更好,因此將displayChar用作不可顯示的字符。
請(qǐng)注意,數(shù)字在每個(gè)LED矩陣上左對(duì)齊顯示。我沒(méi)有研究校正
步驟4:秒
由于我有5個(gè)矩陣,因此我決定將第5個(gè)矩陣固定在小時(shí)和分鐘,使用setLed函數(shù)通過(guò)在每行上依次點(diǎn)亮單個(gè)LED來(lái)標(biāo)記秒,其參數(shù)為:LED編號(hào)(再次從0開(kāi)始計(jì)數(shù)),行,列和布爾值(true = on)。
我使用了嵌套循環(huán),對(duì)偶數(shù)行的第8個(gè)LED進(jìn)行了測(cè)試以進(jìn)行跳過(guò)。我敢肯定還有更優(yōu)雅的方法可以編寫此代碼,但是我只是開(kāi)始使用C語(yǔ)言,并且多年沒(méi)有編程。
步驟5:LED時(shí)鐘草圖
/*該草圖基于MAX72xx芯片組運(yùn)行帶有五個(gè)LED矩陣的時(shí)鐘。
在https://www.instructables.com/id/Multiple-LED-Matrixes-with-Arduino
中顯示了一個(gè)示例,該示例顯示了在4個(gè)LED矩陣上書寫和滾動(dòng)文本的過(guò)程。此草圖使用LedControlMS上頁(yè)的.h(來(lái)自Makerspace),是對(duì)LEDControl.h庫(kù)的修改。
此草圖使用了Arduino時(shí)間和連線庫(kù),而DS3131RTC(DS3232RCTC庫(kù))
Sketch假定以下連線為MAX72xx LED矩陣-
引腳12連接到DataIn引腳11連接到CLK
引腳10連接到LOAD
Dataout(中間輸出引腳)菊花鏈?zhǔn)竭B接到DataIn除最后一個(gè)矩陣外,每個(gè)矩陣的下一個(gè)LED的數(shù)量。
DS3231RTC的布線
VCC和接地分別連接到+ 5VDC和Gnd 《時(shí)鐘》 SDA時(shí)鐘-》模擬4
SCL-》模擬5
*/
#include //DS3232RTC時(shí)鐘庫(kù)也可處理DS3231RTC
#include //用于時(shí)鐘
#include //用于時(shí)鐘
#include“ LedControlMS.h”//注意tha t這不是庫(kù)LEDControl
int h1,h2,m1,m2;//每個(gè)LED矩陣將顯示一個(gè)數(shù)字:小時(shí)1和2,分鐘1和2。這些變量只保留一位數(shù)字
int s1 = 2;//計(jì)數(shù)秒數(shù)的LED
int hr12;//用于12小時(shí)時(shí)間
int noMatrix = 5;//矩陣數(shù)該庫(kù)的地址最多為8。
boolean am = true;//標(biāo)記上午或下午。初始化為am
LedControl lc = LedControl(12,11,10,noMatrix);//Pin分配和矩陣數(shù)(5)
void setup(){
//首先,將系統(tǒng)時(shí)間設(shè)置為硬編碼的日期和時(shí)間,然后將來(lái)自系統(tǒng)時(shí)間的RTC。
//setTime()函數(shù)是時(shí)間庫(kù)的一部分。
//Hr Min Sec dd mm yyyy //RTC.set(now());////從系統(tǒng)時(shí)間設(shè)置RTC
//初始化MAX72XXs(在啟動(dòng)-喚醒調(diào)用時(shí)處于省電模式。
for(int i = 0; i lc.shutdown(i,false);
lc.setIntensity(i,1);//將亮度設(shè)置為較低的值
lc.clearDisplay(i);//清除顯示
}
delay(100);//等待更新顯示之間
lc.clearAll();
}
無(wú)效循環(huán)( ){
//設(shè)置am或pm布爾值(am初始化為true)
if(hour()》 12)
{am = false;
hr12 = hour()-12;
}
/*隔離小時(shí)和分鐘,每個(gè)LED矩陣一位。
我認(rèn)為一個(gè)小時(shí)的數(shù)字看起來(lái)更好,第一位為空。
*/
//分別放置如果小時(shí)數(shù)在其自己的變量h1和h2中
if(hr12 《10)
{
/*
如果《10 hrs,則第一個(gè)LED矩陣為空白(62是空白字符)。
還可以插入零,例如分鐘。
*/ h1 = 151;
h2 = hr12;//第二個(gè)LED顯示小時(shí)的一位數(shù)字
}
else
{
//否則,只需使用t的兩位數(shù)字h1 = h12/10; h1和h2上的小時(shí)。//整數(shù)除以10將返回小時(shí)的第一位數(shù)字。
h2 = hr12%10;//模除以10將返回第二位數(shù)字。
}
//如果(minute()《10)
{
m1 = 0 ;,則分鐘由m1和m2
顯示。//第一分鐘LED d1播放零
m2 = minute();//分鐘的第二個(gè)數(shù)字
}
else
{
m1 = minute()/10;
m2 = minute()%10;
}
/*
使用displayChar函數(shù)顯示小時(shí)和分鐘。它使用兩個(gè)整數(shù)參數(shù):
LED矩陣編號(hào)(0-7)和要顯示的字符。通過(guò)將數(shù)字本身作為第二個(gè)參數(shù)進(jìn)行傳遞,可以簡(jiǎn)單地顯示數(shù)字:即lc.displayChar(0,h1)*/
lc.displayChar(0,h1);//將1位數(shù)顯示在最左邊的(#0)LED上。
lc.displayChar(1,h2);//小時(shí)數(shù)2到LED#1
lc.displayChar(3,m1);//將1位數(shù)字減至LED#3。 (回想一下#2是用于標(biāo)記秒數(shù)的。)
lc.displayChar(4,m2);//將1位數(shù)字減至#4
/*此例程確定要點(diǎn)亮哪個(gè)單個(gè)LED來(lái)計(jì)數(shù)秒數(shù)。
中間LED通過(guò)一次在每個(gè)LED上一次點(diǎn)亮一個(gè)LED來(lái)計(jì)數(shù)秒數(shù)。在8行中在奇數(shù)行上計(jì)數(shù)8個(gè)LED,在偶數(shù)行上計(jì)數(shù)7個(gè)LED。因此,兩行計(jì)數(shù)15秒。
*/
for(int r = 7; r》 -1; r-){//對(duì)于8行中的每一個(gè),從頂部(#7)開(kāi)始。..
for(int c = 0; c 《8; c ++){//對(duì)于一行中的8個(gè)led的每一個(gè)(左側(cè)0 )。..
/*
照亮當(dāng)前列和行上的點(diǎn)。這些似乎在我的硬件上互換了。
因此,我將參數(shù)交換到下面的setLed()函數(shù)中。
正確地將其尋址為setLed(int led#,int row,int col,boolean)。變量s1保留用于此的LED矩陣的LED編號(hào)(從0開(kāi)始計(jì)數(shù))。
*/
if(r%2 == 0 && c == 7)//甚至行AND col 7
{} else
lc.setLed(s1,c,r,true);//打開(kāi)尋址的LED持續(xù)3/4秒
delay(750);
lc.setLed(s1,c,r,false);//關(guān)閉1/4秒
delay(250);
}
}
}
}
-
led
+關(guān)注
關(guān)注
242文章
23824瀏覽量
673451 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1895瀏覽量
133138 -
Arduino
+關(guān)注
關(guān)注
189文章
6497瀏覽量
191947
發(fā)布評(píng)論請(qǐng)先 登錄
Analog Devices Inc. MAX25608 12開(kāi)關(guān)LED矩陣管理器數(shù)據(jù)手冊(cè)

國(guó)星光電攜尖端LED顯示技術(shù)矩陣亮相InfoComm USA 2025
免費(fèi)分享Arduino入門+進(jìn)階(全套例程+書籍)

《ESP32S3 Arduino開(kāi)發(fā)指南》第二章 Arduino基礎(chǔ)知識(shí)
時(shí)空刻度:LED電子時(shí)鐘系統(tǒng)如何重塑現(xiàn)代節(jié)奏

開(kāi)源項(xiàng)目!手把手教你制作一個(gè)互動(dòng)式LED墻壁時(shí)鐘!
ALE光刻曝光光源與常見(jiàn)矩陣式LED光源性能對(duì)比

TLC6984 48×16共陰極矩陣LED顯示驅(qū)動(dòng)器評(píng)估模塊

LP5891 48x16共陰極矩陣LED顯示驅(qū)動(dòng)器評(píng)估模塊

LP5891-Q1 48×16共陰極矩陣LED顯示驅(qū)動(dòng)器評(píng)估模塊

基于LP50xx器件的全彩RGB LED矩陣系統(tǒng)設(shè)計(jì)指南

arduino(1)--ESP8266配置
窄像素間距矩陣LED顯示屏中的常見(jiàn)LED顯示挑戰(zhàn)

MATLAB中的矩陣索引

評(píng)論