圣誕節(jié)又來(lái)了,無(wú)論是一年中最喜歡的假期還是冷汗帶走,裝飾品都在增加。今年,為什么不在您的裝飾品中加入一些DIY技術(shù)以使其脫穎而出呢?
在此項(xiàng)目中,我們將從頭開(kāi)始構(gòu)建防風(fēng)雨,運(yùn)動(dòng)激活的8 x 8 LED矩陣……價(jià)格不到20美元。盡管可以在房子周?chē)娜魏蔚胤绞褂茫脑O(shè)計(jì)都適合放在標(biāo)準(zhǔn)圣誕門(mén)花環(huán)的中央。而且由于它是電池供電的,所以也可以在房子外的任何地方!
零件清單
對(duì)于此項(xiàng)目,您將需要:
我使用Nano的原因是它的體積很小,但是您幾乎可以使用任何與Arduino兼容的微控制器。
64個(gè)xred LED。
8 x 220歐姆電阻。
許多Arduino入門(mén)套件都附帶了這些。我從亞馬遜以10美元的價(jià)格購(gòu)買(mǎi)了多包包裝。
一塊原型板。
這里使用的是9 x 7厘米,盡管可以使用任何大小的電池。
7-12v電池。出于經(jīng)濟(jì)原因,這里使用了一個(gè)簡(jiǎn)單的電池組,但是移動(dòng)銀行充電器可能持續(xù)時(shí)間更長(zhǎng)。
各種短導(dǎo)線。
特百惠盒或類(lèi)似的防風(fēng)雨外殼。
確保將
圣誕花環(huán)。足夠大以容納所有組件了。
任何人都可以,只要確保外殼盒可以放入其中即可。
li》
焊接鐵和焊料。
雖然不是嚴(yán)格必要的,因?yàn)槟梢詫⒔M件直接焊接到Nano上,但我還發(fā)現(xiàn)了一塊小面包板在測(cè)試時(shí)非常有用。 Ahot膠槍還有助于將所有零件組裝在一起。
該項(xiàng)目需要大量的焊接,作為初學(xué)者,這似乎令人生畏。我個(gè)人還是焊接的初學(xué)者,發(fā)現(xiàn)它并不像看起來(lái)那樣具有挑戰(zhàn)性或耗時(shí)。如果您還不熟悉焊接,這里有一些很好的技巧可以幫助您。
如果您真的不熱衷于焊接,可以使用LED燈條或現(xiàn)成的項(xiàng)目來(lái)完成此項(xiàng)目。入門(mén)套件中可能包含的LED矩陣。如果您決定走那條路線,則必須進(jìn)行一些代碼調(diào)整。
設(shè)置Arduino
我們將從Arduino的電路圖以及將要連接的電線開(kāi)始
在矩陣內(nèi)部
現(xiàn)在制作我們的8 x 8 LED矩陣。首先創(chuàng)建矩陣的一行和一列是一個(gè)好主意,以確保它恰好位于原型板上的位置。
在上面的照片中,所有的LED均已放置,使得陽(yáng)極(較長(zhǎng)的正極腳)朝向原型板的頂部。這很重要,因?yàn)槲覀儗⑼ㄟ^(guò)將共同的陽(yáng)極連接在一起來(lái)創(chuàng)建共同的陽(yáng)極列,以及共同的陰極行(較短的負(fù)極)。立即解決此問(wèn)題將在以后省去頭痛!
我們將建立一個(gè)公共的行陰極矩陣,該圖顯示了它們?nèi)绾芜B接。
乍一看可能有些令人生畏,但這是一個(gè)非常簡(jiǎn)單的配置。在每一行中,所有陰極從右到左連接,然后連接到我們的Arduino引腳之一。之后,我們對(duì)陽(yáng)極的每一列都執(zhí)行相同的操作。這樣,根據(jù)我們加電的那一列以及接地的那一行,我們可以打開(kāi)陣列中的任何單個(gè)LED。
讓焊接開(kāi)始
開(kāi)始通過(guò)放置第一排LED。確保所有陽(yáng)極都朝向頂部,并將其翻轉(zhuǎn)過(guò)來(lái)。我發(fā)現(xiàn)在每個(gè)角落添加另一個(gè)LED,并使用一根彈性繩將另一塊Protoboard固定在頂部有助于將所有東西固定在適當(dāng)?shù)奈恢谩?/p>
現(xiàn)在通過(guò)將每個(gè)LED的陰極(短)腳向左彎曲,使它們彼此重疊。從左側(cè)開(kāi)始向右操作最簡(jiǎn)單。如果您使用一塊較大的原型板,則可以先將它們焊接到板上,然后使用焊盤(pán)將它們連接在一起。注意不要將任何陰極連接到板上的任何其他線或陽(yáng)極上!
對(duì)所有八行重復(fù)此過(guò)程,完成后,您應(yīng)該會(huì)看到類(lèi)似以下內(nèi)容的東西:
跳躍陽(yáng)極!
陽(yáng)極的列是多一點(diǎn)點(diǎn)。在上圖中,陽(yáng)極每次穿過(guò)一排陰極時(shí)就會(huì)彎曲。這是因?yàn)樗鼈兏緹o(wú)法觸摸行。我們必須將陽(yáng)極彎曲到陰極行上方,并將它們彼此連接。您可能會(huì)發(fā)現(xiàn)用筆彎曲腿有很大幫助。
對(duì)每一排陽(yáng)極執(zhí)行此操作,并在每個(gè)頂部連接一個(gè)電阻陽(yáng)極。您可能會(huì)發(fā)現(xiàn)將電阻器放置在原型板的下一個(gè)孔中并使用焊料將其連接起來(lái)更為容易。您現(xiàn)在應(yīng)該有這樣的內(nèi)容:
恭喜! LED矩陣已完成。在此階段,請(qǐng)徹底檢查焊接,以確保沒(méi)有間斷,并且所有列均未接觸到行。如果它看起來(lái)不漂亮,請(qǐng)不要擔(dān)心,我們只需要它起作用即可!您現(xiàn)在可以通過(guò)在列的任意一端附加5v,并在行的任意一端接地來(lái)分別檢查每個(gè)LED。
如上圖所示,將連接線連接到每一列和每一行,然后將其連接到您的Arduino。
讓我們開(kāi)始編碼
打開(kāi)Arduino IDE,選擇您的開(kāi)發(fā)板,然后港口。如果您不熟悉Arduino,請(qǐng)查閱此入門(mén)指南。
將此代碼輸入編輯器。如果您不熟悉它,則它是非常密集的代碼,但是可以在此處使用完整注釋的代碼來(lái)幫助理解它的工作原理。
const int row[8] = {
2,3,4,5,6,7,8,9
};
const int col[8] ={
10,11,12,14,15,16,17,18
};
int pirPin = 19;
int pirState = LOW;
int val = 0;
bool pirTrigger = false;
const int pirLockTime = 12000;
int pirCountdown = pirLockTime;
int pixels[8][8];
const int refreshSpeed = 500;
int countDown = refreshSpeed;
int currentCharIndex = 0;
typedef bool CHAR_MAP_NAME[8][8];
const CHAR_MAP_NAME blank = {
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
};
const CHAR_MAP_NAME threedownthreein = {
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 1 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
{0 , 0 , 0 , 0 , 0 , 0 , 0 , 0},
};
const int noOfFrames = 5;
const CHAR_MAP_NAME *charMap[noOfFrames] ={
&blank,
&threedownthreein,
&blank,
&blank,
&threedownthreein
};
void setup(){
for (int i=0;i《8;i++){
pinMode(row[i], OUTPUT);
pinMode(col[i],OUTPUT);
//motion sensor
pinMode(pirPin, INPUT);
digitalWrite(col[i], LOW);
}
}
void screenSetup(){
const CHAR_MAP_NAME *thisMap = charMap[currentCharIndex];
for (int x = 0; x 《 8; x++)
{
for (int y = 0; y 《 8; y++) { bool on = (*thisMap)[x][y]; if(on) { pixels[x][y] = HIGH; } else { pixels[x][y] = LOW; } } } currentCharIndex++; if(currentCharIndex》=noOfFrames){
currentCharIndex = 0;
}
}
void refreshScreen(){
for (int currentRow = 0; currentRow 《 8; currentRow++){
digitalWrite(row[currentRow], LOW);
for (int currentCol = 0; currentCol 《 8; currentCol++){
int thisPixel = pixels[currentRow][currentCol];
digitalWrite(col[currentCol], thisPixel);
if (thisPixel == HIGH) {
digitalWrite(col[currentCol], LOW);
}
}
digitalWrite(row[currentRow], HIGH);
}
}
void loop(){
val = digitalRead(pirPin);
if (val == HIGH){
pirTrigger = true;
}
else if (val == LOW && pirCountdown 《=0) { pirTrigger=false; pirCountdown = pirLockTime; } if(pirTrigger==true && pirCountdown 》 0)
{
refreshScreen();
countDown--;
pirCountdown--;
if(countDown 《= 0)
{
countDown = refreshSpeed;
screenSetup();
}
}
}
要理解的重要部分是:
refreshSpeed 變量。此變量確定每個(gè)屏幕之間的時(shí)間刷新方式。數(shù)字越大意味著等待時(shí)間越長(zhǎng)。
常量 CHAR_MAP_NAME s。在此處放置要顯示的每個(gè)字符映射表(或框架,如果更容易想到它們的話)。
noOfFrames 變量。這決定了一個(gè)完整播放中顯示多少幀。請(qǐng)注意,它可以與字符映射表的數(shù)量不同。例如,如果要顯示“ A CAT”,則只需要定義四個(gè)不同的框架:空白, A , C 和 T 。
現(xiàn)在,當(dāng)運(yùn)動(dòng)傳感器檢測(cè)到運(yùn)動(dòng)時(shí),LED屏幕應(yīng)使LED向下閃爍3次,并從左上角閃爍3次。如果顯示不正確,請(qǐng)?jiān)俅螜z查接線,以確保一切均在正確的位置!當(dāng)您添加自己的圖像或消息時(shí),它可能會(huì)過(guò)早切斷或播放時(shí)間過(guò)長(zhǎng)。嘗試更改 pirLockTime 變量,直到它播放所需的時(shí)間。
將每幀添加到LED顯示屏的過(guò)程可能有點(diǎn)繁瑣,因此我們創(chuàng)建了此電子表格,以便為您的LED矩陣創(chuàng)建文本和圖像(創(chuàng)建Google表格的副本,以便您對(duì)其進(jìn)行編輯)變得更加容易。
使用電子表格,您可以將創(chuàng)建的內(nèi)容直接復(fù)制到代碼。
使它勇于挑戰(zhàn)
現(xiàn)在,我們有了一個(gè)有效的LED矩陣,我們需要一種方法來(lái)使其在冬天的天氣中生存下來(lái)。雖然此方法可能無(wú)法經(jīng)受熱帶風(fēng)暴或在游泳池中浸泡,但應(yīng)足以保護(hù)所有電子設(shè)備免受元件侵害。
我使用了直徑為15厘米的圓形特百惠盒子和6厘米深,因?yàn)樗耆m合我的組件。在蓋子上切一個(gè)比您的LED矩陣稍大的窗戶(hù),并在上面貼上一層透明的塑料膜,確保沒(méi)有液體進(jìn)入的空間。用某些包裝堅(jiān)固的塑料效果最好,但這就是我的全部。您也可以為原型板安裝一些安裝座,盡管兩個(gè)工作都可以使用堅(jiān)固的防水膠帶輕松完成。
接下來(lái),在Protoboard的下面做一個(gè)小孔然后小心緩慢地加寬窗口,直到您的PIR傳感器只能通過(guò)。您希望它盡可能貼合。
安裝PIR傳感器,并用膠帶或熱膠填充您可以看到的任何間隙。/p》
清理所有可能使包裝盒無(wú)法正常關(guān)閉的膠帶或膠水,然后將所有組件和電池一起添加到包裝盒中。在這里,使用了一個(gè)簡(jiǎn)單的AA電池組,直接插入Nano的VCC引腳。將幾小瓶軟木塞添加到外殼的外部,以幫助將模型懸掛在花環(huán)的中央。
然后我們完成了
一旦盒子被密封,將其與您的圣誕花環(huán)一起懸掛,并等待您的訪客對(duì)您低于20美元的高科技個(gè)人歡迎商品做出反應(yīng)!您甚至可以更進(jìn)一步,還可以為房子周?chē)钠渌胤絼?chuàng)建很棒的DIY裝飾!
在此項(xiàng)目中,我們建立了一個(gè)獨(dú)立的LED矩陣從零開(kāi)始的運(yùn)動(dòng)系統(tǒng),即運(yùn)動(dòng)激活的系統(tǒng),即使在最?lèi)毫拥奶鞖庀拢部梢栽谑彝馍妗T谄渌?xiàng)目的假期結(jié)束后,此構(gòu)建將很有用,并且可以使用相同的技術(shù)為其他項(xiàng)目創(chuàng)建便宜的防風(fēng)雨外殼。
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
188029 -
LED矩陣
+關(guān)注
關(guān)注
0文章
71瀏覽量
17664
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
夢(mèng)幻圣誕季,LED 點(diǎn)亮別樣浪漫
![夢(mèng)幻<b class='flag-5'>圣誕</b>季,<b class='flag-5'>LED</b> 點(diǎn)亮別樣浪漫](https://file1.elecfans.com/web3/M00/04/01/wKgZO2duCMqAWHHMAAi3YPvSGiI309.png)
TLC6984 48×16共陰極矩陣LED顯示驅(qū)動(dòng)器評(píng)估模塊
![TLC6984 48×16共陰極<b class='flag-5'>矩陣</b><b class='flag-5'>LED</b>顯示驅(qū)動(dòng)器評(píng)估模塊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
脈沖全閉環(huán)EtherCAT運(yùn)動(dòng)控制器的固件升級(jí)
![脈沖全閉環(huán)EtherCAT<b class='flag-5'>運(yùn)動(dòng)</b>控制器的固件<b class='flag-5'>升級(jí)</b>](https://file1.elecfans.com/web2/M00/0B/05/wKgZomcsK3yAZps9AAF_4u_AXfM832.png)
基于LP50xx器件的全彩RGB LED矩陣系統(tǒng)設(shè)計(jì)指南
![基于LP50xx器件的全彩RGB <b class='flag-5'>LED</b><b class='flag-5'>矩陣</b>系統(tǒng)設(shè)計(jì)指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
窄像素間距矩陣LED顯示屏中的常見(jiàn)LED顯示挑戰(zhàn)
![窄像素間距<b class='flag-5'>矩陣</b><b class='flag-5'>LED</b>顯示屏中的常見(jiàn)<b class='flag-5'>LED</b>顯示挑戰(zhàn)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
LED機(jī)械矩陣屏:打造獨(dú)特視覺(jué)效果的視覺(jué)盛宴
esp8266怎樣才能正確的把更新的代碼升級(jí)到target上?
BP神經(jīng)網(wǎng)絡(luò)激活函數(shù)怎么選擇
LED圣誕燈電路圖 LED圣誕燈的工作原理和特點(diǎn)
![<b class='flag-5'>LED</b><b class='flag-5'>圣誕</b>燈電路圖 <b class='flag-5'>LED</b><b class='flag-5'>圣誕</b>燈的工作原理和特點(diǎn)](https://file1.elecfans.com/web2/M00/F7/1E/wKgZomaDwjmAWgb2AAFe9tkhSOE896.png)
圣誕樹(shù)燈電路圖分享
![<b class='flag-5'>圣誕</b>樹(shù)燈電路圖分享](https://file1.elecfans.com/web2/M00/D2/55/wKgaomYjJGmAdw5CAAGuNGWxrlY376.png)
stm8L如何在ROP激活狀態(tài)下,進(jìn)行BootLoader的升級(jí)?
大電流、高性能LED矩陣驅(qū)動(dòng)器LP5866T數(shù)據(jù)表
![大電流、高性能<b class='flag-5'>LED</b><b class='flag-5'>矩陣</b>驅(qū)動(dòng)器LP5866T數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
CY8C4247AZI-M485通過(guò)cyflash升級(jí)應(yīng)用程序失敗的原因?
簡(jiǎn)單的夜間激活PIR燈電路
![簡(jiǎn)單的夜間<b class='flag-5'>激活</b>PIR燈電路](https://file1.elecfans.com/web2/M00/C1/D6/wKgaomXa3J2APPEGAAHAxY3t2Zs091.png)
評(píng)論