步驟1:此版本中使用的部件
對于這個項目,我使用了以下組件:
帶面包板的Arduino Uno
32x32 RGB LED矩陣(來自AdaFruit或Tindie)
5V 4A電源適配器(來自AdaFruit)
母DC電源適配器2.1mm插孔至螺絲接線端子(來自AdaFruit)
跳線
AdaFruit還銷售Arduino屏蔽,可用于代替跳線。
和我一樣有一些Tindie學分,我從Tindie得到了我的矩陣,但是AdaFruit的矩陣看起來是相同的,所以任何一個都應該有用。
光電晶體管來自我幾十年前的零件系列。它是一個明顯的3mm部分標記為TIL78。據我所知,該部件適用于紅外線,可以是一個透明的外殼或一個阻擋可見光的黑暗外殼。由于RGB LED矩陣發出可見光,因此必須使用透明版本。
此TIL78似乎已經停產,但我想這個項目可以使用現代光電晶體管制作。如果你發現有用的東西,請告訴我,我會更新這個Instructable!
第2步:連接和測試光電晶體管
通常,你需要一個與光電晶體管串聯的電阻,但是我知道Arduino能夠在任何引腳上啟用內部上拉電阻。我懷疑我可以利用它將光電晶體管連接到Arduino,而無需任何額外的組件。事實證明我的預感是正確的!
我用電線將光電晶體管連接到Arduino上的GND和A5引腳。然后我創建了一個草圖,將A5引腳設置為INPUT_PULLUP。這通常用于開關,但在這種情況下它為光電晶體管供電!
#define SENSOR A5
void setup() {
Serial.begin(9600);
pinMode(SENSOR, INPUT_PULLUP);
}
void loop() {
// Read analog value continuously and print it
Serial.println(analogRead(SENSOR));
}
此草圖將值打印到與環境亮度對應的串行端口。通過使用Arduino IDE“工具”菜單中的便捷“串行繪圖儀”,我可以獲得環境光的移動圖!當我用手蓋住并打開光電晶體管時,圖表會上下移動。很好!
這個草圖是檢查光電晶體管是否以正確極性接線的好方法:光電晶體管在一個方向與另一個方向連接時會更敏感。
步驟3:將矩陣帶狀電纜連接到Arduino
要將矩陣連接到Arduino,我瀏覽了Adafruit的這本方便指南。為方便起見,我將圖表和引腳分布粘貼到文檔中并打印了一個快速參考頁面,以便在連接所有內容時使用。
注意確保連接器上的選項卡與圖中的選項卡匹配。
或者,對于更清潔的電路,您可以使用AdaFruit為這些面板銷售的RGB矩陣屏蔽。如果使用屏蔽,則需要焊接光電晶體管的插頭或電線。
步驟4:連接矩陣
我將矩陣電源線上的叉形端子擰到插孔適配器上,確保極性正確。由于部分端子暴露在外,為了安全起見,我用電工膠帶將整個部件包起來。
然后,我插上電源連接器和帶狀電纜,注意不要打擾電源線中的跳線。過程
步驟5:安裝AdaFruit矩陣庫并測試矩陣
您需要安裝“RGB矩陣面板”和AdaFruit“ Adafruit GFX Library“在您的Arduino IDE中。如果你需要幫助,這個教程是最好的方法。
我建議你運行一些例子,以確保你的RGB面板在繼續之前工作。我建議使用“plasma_32x32”示例,因為它非常棒!
重要提示:我發現如果在插入5V電源到矩陣之前我給Arduino上電,矩陣會朦朧地亮起來。似乎矩陣試圖從Arduino中獲取力量,這絕對不利于它!因此,為了避免Arduino過載,請在啟動Arduino之前啟動矩陣!
步驟6:加載Matrix掃描碼
現在,加載Arduino草圖以掃描矩陣。我提供了Arduino源代碼。加載后,您應該會看到每隔幾秒閃爍一次光的閃光。
如果您將光電晶體管靠近矩陣,您應該會看到光電傳感器附近的LED亮起。
嘗試進一步移動光電晶體管,使其更接近矩陣,看看它的行為就像手電筒一樣。如果你將一個物體放在矩陣上并將光電晶體管放在它上面,你應該能夠捕捉到物體的“陰影”!
你可以在代碼中找到一些參數:
static constexpr uint8_t READINGS_PER_PIXELS = 1;
static constexpr uint8_t THRESHOLD = 15;
static constexpr bool INVERT = false;
static constexpr bool CLEAR = true;
如果檢測效果不佳,您可以嘗試增加READING_PER_PIXEL和THRESHOLD。將CLEAR設置為false以獲得類似畫筆的效果,其中每個新掃描會向畫布添加更多“繪畫”。對于負效應,將INVERT設置為true,其中矩陣通常點亮,但光電晶體管會使其“看到”變暗。
步驟7:代碼如何工作:檢測可見對比一個模糊的LED
經過一些實驗,我發現從傳感器檢測像素是否可見的最佳方法是從傳感器獲取成對的模擬讀數:當LED是一個讀數時當LED亮起時關閉和另一個讀數。如果傳感器看不到LED,則讀數幾乎相同;如果傳感器可以看到LED,則讀數會有所不同。
為了提高靈敏度,我在使用OE(輸出使能)線打開和關閉LED時讀取多個讀數。我使用兩個累加器來總結LED關閉時的讀數與LED打開時的讀數。然后我將這兩個總和之間的差異與閾值進行比較,以確定該值是否超過某個閾值,從而讓我決定LED是否在傳感器的視線范圍內。
步驟8 :代碼如何工作:掃描矩陣
為了掃描矩陣,我直接操作數據線,因為這比使用AdaFruit庫繪制像素更有效。要禁用AdaFruit庫,我會在開始掃描之前關閉中斷。由于AdaFruit庫通過使用中斷工作,這使我可以暫時控制矩陣。
矩陣有六個移位寄存器,對應于整行像素的R,G和B顏色。矩陣的上半部分和下半部分。還有一個鎖存控制線(LAT),它將移位寄存器中的值復制到LED驅動器。四條地址線(A,B,C和D)選擇上半部分和下半部分的哪些行有效,OE(輸出使能)用于打開和關閉LED驅動器。
在正常操作中,當新的替換行移入移位寄存器時,鎖存器保持用先前值照亮的行。加載完整行后,將鎖定新值,并為下一行重復該過程。這種更新方式需要寫入整行,即使只需要寫入一個像素。
對于掃描,我選擇利用移位寄存器,但不選擇鎖存功能。我將鎖存控制線(LAT)設置為高電平,使得移位寄存器的內容立即在每個CLK脈沖上加載到LED驅動器中。一旦我照亮了第一個像素,時鐘線(CLK)上的每個脈沖都會使點亮的像素沿著行向下推到下一個像素。在這樣做時,我可以將照亮的像素向下按行以掃描整行。
對于行中的每個位置,我使用OE(輸出使能)線來打開和關閉像素。從光傳感器獲取讀數。一旦我有足夠的讀數來確定該像素是否可見,我就會向AdaFruit庫的幀緩沖區寫一個顏色(掃描時,我仍然可以將像素值寫入庫的幀緩沖區,即使庫暫時暫停) 。
掃描完所有行后。我重新啟用中斷,這會導致AdaFruit庫使用緩沖區中的數據刷新矩陣,直到我準備好進行下一次掃描。
-
掃描儀
+關注
關注
2文章
427瀏覽量
67988 -
LED矩陣
+關注
關注
0文章
71瀏覽量
17658
發布評論請先 登錄
相關推薦
條形碼掃描儀模組在醫療行業識讀領域中的應用
![條形碼<b class='flag-5'>掃描儀</b>模組在醫療行業識讀領域中的應用](https://file1.elecfans.com/web2/M00/0B/DD/wKgZomc66fSAV2KdAACSDcrr-pA575.png)
微軟已修復掃描儀USB連接問題
如何將三維激光掃描儀與BIM結合使用
三維激光掃描儀在工程測量中的優勢
三維激光掃描儀與無人機結合的應用
三維激光掃描儀使用技巧 三維激光掃描儀測量精度分析
三維激光掃描儀應用領域 三維激光掃描儀與傳統測量工具比較
大幅掃描儀掃描地圖怎么操作
蔡司激光三維掃描儀有效掃描金屬材料
![蔡司激光三維<b class='flag-5'>掃描儀</b>有效<b class='flag-5'>掃描</b>金屬材料](https://file1.elecfans.com/web2/M00/08/1B/wKgZomb1CIOAaO_pAADnXUd--Sc643.png)
何為電磁干擾(EMI)掃描儀,哪里需要它?
![何為電磁干擾(EMI)<b class='flag-5'>掃描儀</b>,哪里需要它?](https://file.elecfans.com/web2/M00/9F/D9/poYBAGQ9752APSjeAAAYI1VgEtY574.png)
如何選擇電磁干擾(EMI)掃描儀,看看這幾點
![如何選擇電磁干擾(EMI)<b class='flag-5'>掃描儀</b>,看看這幾點](https://file.elecfans.com/web2/M00/9F/D9/poYBAGQ9752APSjeAAAYI1VgEtY574.png)
lidar激光雷達掃描儀有什么用
![](https://file1.elecfans.com/web2/M00/C6/04/wKgaomX6eAeAXeWqAARa_zzIkzs961.png)
工業CT斷層掃描儀延長使用壽命的事項
![工業CT斷層<b class='flag-5'>掃描儀</b>延長使用壽命的事項](https://file1.elecfans.com/web2/M00/8A/10/wKgaomSP-diASi8NAADLLj5hLSI078.png)
評論