聖誕節又到了,不管是你一年中最喜歡的節日,還是讓你出了一身冷汗,裝飾品都開始增多。今年,為什麼不在你的裝飾品中加入一些DIY技術,讓它們脫穎而出呢?
在這個項目中,我們將建立一個防風雨,運動激活8×8 LED矩陣從頭開始。。。不到20美元。它的設計適合在一個標準的聖誕門花環的中心,雖然它可以在房子周圍的任何地方使用。因為它是電池供電的,所以離房子遠的任何地方都可以!
對於本項目,您需要:
雖然沒有嚴格的必要,因為你可以焊接組件直接到納米,我也發現一個小的實驗板非常有用,而測試。熱膠槍也有助於把所有的零件放在一起。
這個項目需要大量的焊接,作為一個初學者,它似乎令人畏懼。我個人還是一個焊接的初學者,發現它不像看上去那麼有挑戰性或時間消耗。如果你是新來焊接這裡有一些好的提示來幫助。
如果你真的不熱衷於焊接的想法,這個項目也可以與LED帶,或現成的LED矩陣,你可能在你的初學者工具包。如果你決定走這條路,一些代碼調整是必要的。
我們將從Arduino的電路圖開始,我們將連接到PIR傳感器和LED矩陣的導線。
現在來**我們的8 x 8 LED矩陣。從創建矩陣的一行和一列開始是個好主意,以確保它正好位於原型板上您想要的位置。
在上面的照片中,所有的LED都被放置在陽極(更長,正的腿)朝向原板的頂部。這是很重要的,因為我們將通過將它們連接在一起來創建公共陽極柱,以及一排普通陰極(較短的負支)。現在就這樣做會在以後省去頭痛!
我們將構建一個公共行陰極矩陣,這個圖顯示了它是如何連接的。
一開始它可能看起來有點嚇人,但它是一個非常簡單的配置。在每一行中,所有的陰極從右到左連接,然後連接到我們的Arduino引腳之一。在這之後,我們對每一列陽極做同樣的處理。通過這種方式,我們可以打開陣列中的任何單個LED,具體取決於我們向哪個列供電,以及將哪個行接地。
從放置第一排LED開始。確保所有的陽極都朝向頂部,並將其翻轉過來。我發現在每個角落加上另一個LED,在上面用一根鬆緊繩連接另一塊原版電路板,有助於將所有東西固定到位。
現在一個接一個地將每個LED的陰極(短)腿向左彎曲,使它們彼此重疊。從左邊開始,從右邊開始是最容易的。如果您使用的是一塊較大的protoboard,可以先將它們焊接到板上,然後使用焊盤將它們連接在一起。小心不要將任何陰極連接到電路板上的任何其他線路或任何陽極上!
對所有八行重複此過程,完成後,應該有如下內容:
陽極柱更精細一些。在上圖中,陽極每次穿過一排陰極時都會彎曲。這是因為他們根本摸不到這些行。我們必須把陽極彎到陰極排上,並把它們相互連接起來。你可能會發現用鋼筆彎腿很有幫助。
對每一排陽極都這樣做,並在每個頂部陽極上連接一個電阻器。你可能會發現,把電阻放在protoboard的下一個孔中,然後用焊料連接焊盤更容易。你現在應該有這樣的東西:
祝賀 你!LED矩陣完整。在這個階段徹底檢查焊接,確保沒有斷裂,並且沒有任何一列接觸到這些行。別擔心如果它看起來不好看,我們只需要它來工作!現在,您可以通過將5v連接到任何柱端,並將其接地到任何一行端,來檢查每個LED。
如果一切正常,將連接線連接到每列和每行,並將它們連接到Arduino上,如上圖所示。
打開ArduinoIDE並選擇板和端口。如果您是Arduino的新手,請查看此入門指南。
在編輯器中輸入此代碼。如果您不熟悉它,那麼它是相當密集的代碼,但是這裡提供了完整的註釋來幫助您理解它是如何工作的。
c***t int row[8] = { 2,3,4,5,6,7,8,9 };c***t int col[8] ={ 10,11,12,14,15,16,17,18 };int pirPin = 19; int pirState = LOW; int val = 0; bool pirTrigger = false;c***t int pirLockTime = 12000; int pirCountdown = pirLockTime;int pixels[8][8];c***t int refreshSpeed = 500;int countDown = refreshSpeed;int currentCharIndex = 0;typedef bool CHAR_MAP_NAME[8][8];c***t 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},}; c***t 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},}; c***t int noOfFrames = 5;c***t 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(){ c***t 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(); } } }需要了解的重要部分包括:
刷新速度變量。此變量確定每次屏幕刷新之間的時間間隔。數字越大,等待的時間就越長。
常量字符映射名稱。這是您放置要顯示的每個角色映射(或幀,如果這樣想比較容易的話)。
noOfFrames變量。這將決定在一次完整播放中顯示多少幀。請注意,它可能與字符映射的數量不同。例如,如果您想顯示“一隻貓”,您只需要定義四個不同的幀:blank、A、C和T。
現在,當運動傳感器檢測到運動時,LED屏幕應從左上角向下閃爍三下,向內閃爍三下。如果顯示不正確,請再次檢查您的接線,以確保一切都在正確的位置!當您添加自己的圖像或信息時,它可能會被提前切斷,或播放時間過長。嘗試更改pirLockTime變量,直到它按所需時間播放。
將每個幀添加到LED顯示屏的過程可能會有點乏味,因此我們創建了此電子表格,以便為LED矩陣創建文本和圖像(**一份谷歌表副本,以便您可以編輯它)。
使用電子表格,您可以將您的創作直接複製到代碼中。
現在我們有了一個工作的LED矩陣,我們需要一種方法讓它在冬季生存。雖然這種方法可能經不起熱帶風暴或被泡在游泳池裡,但它應該足以使所有的電子產品免受惡劣天氣的影響。
我用了一個直徑15釐米,深6釐米的圓形圖珀盒,因為它完全適合我的組件。在蓋子上剪一個比LED矩陣稍大的窗戶,並在上面貼上一層透明的塑料薄膜,確保沒有液體進入的空間。從一些包裝中取出的堅固塑料最有效,但這就是我所擁有的。您也可以為原板安裝一些安裝,儘管這兩個工作都可以很容易地用強力防水膠帶完成。
下一步,在窗戶下面開一個小孔,然後小心地慢慢地加寬它,直到你的PIR傳感器剛好可以通過。你希望它儘可能合身。
連接PIR傳感器,並用膠帶或熱膠水填充任何可以看到的間隙。
清理所有可能阻止盒子正常關閉的膠帶或膠水,並將所有組件與電池一起添加到盒子中。這裡,使用了一個簡單的AA電池組,直接**Nano的VCC引腳。一些小塊的軟木塞被添加到圍牆的外面,以幫助將建築物懸掛在花環的中心。
一旦盒子封好了,就把它和你的聖誕花環掛在一起,等待你的訪客對你的高科技20美元以下的個人歡迎的反應!你甚至可以更進一步,創造可怕的DIY裝飾周圍的房子了!
在這個項目中,我們已經建立了一個自包含的LED矩陣系統從頭開始,這是運動激活,可以生存在外面,但最惡劣的天氣。在其他項目中,這個構建將在假期結束後很長時間內發揮作用,同樣的技術也可以用於為其他項目創建廉價的防風雨外殼。
你有沒有做什麼東西來讓你的聖誕節有一個DIY的轉折點?你今年有沒有打算買什麼DIY主題的聖誕禮物?請在下面的評論中告訴我們!
...止,透過使用IFTTT整合,您幾乎可以使用任何東西來觸發您的**。在我們的Wi-Fi控制的PC機箱照明文章中,我們利用一封新郵件的到來觸發了我們的LED條。同樣的理論也可以在這裡應用。還有什麼比你自己的預告鍾更能讓你在你的...
...很好的方法來掌握Pi終端,以及簡單的程式可以如何影響您的元件產生巨大的影響!檢視我們的樹莓皮初學者教程的深入指導,讓你開始! ...
...麼,只要一點知識和指導。這裡有七種方法來美化你今年的聖誕節,從初學者友好到令人印象深刻的複雜。 ...
...意打賭它是Alexa,使用正確的軟體,您可以將服務連線到您的Raspberry Pi。 ...
...於電源線的橋接技術是一種很好的實踐,因為它可以確保您的元件無論在試驗板上的什麼位置都可以獲得電源。 ...
... 模擬圍棋是一個小動作檢測報警,為您的家和財產的安全。這種手掌大小的裝置配備了變色LED,可以很容易地連線到大多數表面和物品上。裝置前面的白色圓形突出物容納運動檢測感測器。 ...
...前提醒、溫和的喚醒和睡眠跟蹤。 如果你正在尋找一個升級到iphone11的好理由,那麼夜間模式可能就是。不過,如果這還不夠的話,深聚變相機可能是。 否則,你只能勉強適應黑暗模式和iOS13的其他新功能。 相關:如何在iOS 10...