如果您在PC或媒體中心上看了很多電影,我肯定您已經面臨照明困境。您是否完全關閉所有燈?您是否讓它們處于爆炸狀態?還是使用調光開關將暗淡的黃色光芒保持在某處?
花費不到100美元,您就可以設置一個令人驚嘆的照明系統,該系統可以反映屏幕上的內容;如果視頻是藍色的夜景,則燈光將是藍色的;當橙色火焰燃燒時,您的燈光也會閃爍。歡迎來到環境RGB照明的世界。
組件
RGB燈帶–這是5米長的RGB LED燈帶,可以在eBay上購買并從香港發貨每個不到20英鎊。如果您在電子商店中購買商品,則需要按電表付款,而500萬卷的價格是該價格的三到四倍,因此請在線購買。這些類型的LED燈條可以更改為任何顏色,但一次只能更改-它們不能單獨調節。
12v電源-所需的功率(安培數)取決于您安裝了多少LED燈條將連接。每個儀表消耗約0.6安培的電流,但這取決于您的LED的密度,因此請務必檢查您的特定LED燈條。 3A足以滿足我上面鏈接的5m帶,并且如果您無法在其他地方采購一個,則可以以10英鎊左右的價格購買單獨的電源。
3 x MOSFET N晶體管–您可能會發現價格便宜,但我以10英鎊左右的價格買了一包6張(em》 STP16NF06FP型)。這些用于隔離來自Arduino的電流-將板條直接連接到Arduino會將它們消耗的電流炸掉。對于紅色,綠色和藍色,每個LED彩色通道需要1個MOSFET晶體管。
Arduino –我沒有包括此項目的成本,因為假設您已經擁有一個,并且有
因此,如果您買不起官方的副本,則可以購買各種克隆。
因此,總成本約為 40英鎊(不包括Arduino)。 p》 簡介
該項目由兩部分組成。首先,我們將創建一個基本的Arduino電路,該電路可偵聽來自計算機的命令,并將RGB LED設置為適當的顏色。第二個步驟是在計算機端使用一個名為處理和Java的新應用程序–計算當前屏幕上的顏色,將它們取平均,然后將其輸出到串行通信端口,以便Arduino做出反應。
第1部分:電路和Arduino
我們正在使用的電路非常簡單,如下圖所示。 LED燈條的一端應帶有公插頭,您可以將其直接插入面包板中。
您的LED燈帶可能會有所不同,但是如果您仔細觀察,會看到 12v,R,G,B 寫在軌道上的某個地方。這些條實際上可以在這些銅點處進行切割(我的每個LED上有3個LED),因此,如果您想在電視的角落切割條,則可以放心地進行操作-您也無需使用整個5m ,因此您可能還有一些可用于將來的項目。將12v正電壓直接連接到外部電源。
MOSFET具有三個引腳。 門,流失和源。門就像Arduino將控制的電子開關一樣。然后,這確定了在源極和漏極之間流動的電流。每個MOSFET的漏極都應連接到Arduino的地,并連接到電源的地,而源極應連接到LED燈帶通道。
完成電路后,下載并運行此測試代碼(最初從LadyAda,引腳已修改)。您應該會看到LED燈帶通過各種顏色旋轉。
第2部分:處理
下載處理并運行。您可能會驚訝地發現它看起來幾乎完全像Arduino開發環境一樣;這是因為Arduino環境基于此環境,盡管它們都執行不同的功能。拿起這段代碼-最初是Silicon Republic的,但是我做了大量修改,使屏幕尺寸設置自動且具有更好的色彩表現力-花一點時間仔細研究一下。基本上,它使用名為 Robot 的Java類來每隔 10ms 進行屏幕捕獲;然后,它挑選出每個奇數像素并平均總顏色。如果對您來說性能是一個問題,請將 skipValue 變量增加到3或4以跳過更多像素-總體效果應該相同,但是因為它檢查的像素更少,所以運行速度更快。最后,我添加了一個過濾器,該過濾器通過增大找到的最大RGB值和減小最小的RGB值來幫助飽和顏色(沒有這個,我發現顏色太白了)。
運行該應用;第一次,您可能會在嘗試訪問錯誤的串行端口時收到錯誤消息。
檢查調試窗口以獲取當前串行列表端口,并記下Arduino插入的端口旁邊的數字。在Mac上,USB連接是端口4。將此行中的數字更改為正確的端口:
port = new Serial(this, Serial.list()[4],9600); //set baud rate
保存并重新運行;您應該會看到一個小窗口-這代表屏幕上所有內容的平均顏色。啟動繪畫應用程序或帶有濃色的東西以對其進行測試,否則它可能只會顯示模糊的灰色陰影。完成測試后,請停止應用程序,因為我們需要通過串行端口訪問才能對Arduino進行編程。
最后,將此代碼加載到Arduino上。這段代碼不是向LED燈帶發送隨機顏色,而是從串行端口(處理輸出到該端口)讀取值。這很容易理解,唯一困難的部分可能是在串行數據中使用標記:
if (Serial.available()》=4) {
if(Serial.read() == 0xff){
red = Serial.read();
green= Serial.read();
blue = Serial.read();
}
}
這可確保我們讀取正確的字節值– Processing app在每組值之間輸出一個標記作為“斷點”,以便Arduino不會不同步,并認為綠色值代表藍色等。
一旦Arduino代碼上傳(存在最初在LED燈條上應該沒有輸出),然后您可以加載并運行Processing應用程序;立即,您應該會看到環境光在起作用。
下面是一個視頻演示,演示了如何通過隨機的Trippy音樂視頻為我工作。
您覺得呢?雖然它不如分析屏幕的每個部分并使用單獨的LED像素的東西令人印象深刻,但它便宜得多,而且亮度更高。唯一的缺點是,所有內容都必須在媒體中心計算機上運行,例如,它不能與常規電視廣播或Xbox 360一起使用。如果您有任何問題,疑問或建議,則請走開;或鏈接到完成設置的視頻。
責任編輯:wv
-
照明系統
+關注
關注
3文章
414瀏覽量
32929 -
Arduino
+關注
關注
188文章
6475瀏覽量
187459
發布評論請先 登錄
相關推薦
評論