2017年10月8日 星期日

NeoPixel

NeoPixel是很厲害的三色LED燈條組,有各種規格。我買了8x8 和 16x16的,來做RGB混色的實驗。

物品外觀可以看 http://mntech.com.tw/NeoPixel8x8
但是由於我要把裝置接在ywrobot EMS上,所以端子的腳位要做一點調整。


上面是原本的焊接方式,下面是我調整過順序的。基本上GND不動,但是改變 5V和Din的位置,讓它們交換。這樣才能符合EMS上針腳排列的腳位。原本neopixel安排的端子,5V會在邊緣,線換過之後5V在端子的地方會跑到中間,這樣才能直接插上EMS。


NeoPixel還允許多組串連,所以有個DOUT,雖然還用不到,我也就一併修改了。事實上我應該把我手上的neopixel都做修改,以免以後忘記接錯就糟糕了。


接下來是軟體部分,需要一個 Adafruit Neopixel的library 連結在此  https://github.com/adafruit/Adafruit_NeoPixel

NeoPixel的library有好幾個地方可以找到。我只有用上面那個adafruit的。我拿library的範例「simple」來改成自己要的程式碼。大概只有幾個地方需要處理

首先是第六行的 PIN 要改成要接neopixel的數位腳位,以我來說要接D7,就改成7。再來是第七行的NUMPIXELS 是指要接上去的neopixel有幾顆?以8x8的來說就是64顆,如果是16x16,就是256。

這個library的寫法,是把燈泡編號,總共64顆的話,就是把燈泡編碼從0開始一直編到63號。然後用第九行的程式,表達這兩件事情。



接著看後半部的程式


第14行,是起始neopixel的指令
第18行,是用一個迴圈,讓i從0開始,每次迴圈都+1,直到64就停下來。所以i會從0一直增加到64。然後第19行,是主要讓燈泡發光的指令

括號裡面的第一個數字i,代表燈泡的編號。然後pixels.Color的括號裡面,代表這個編號燈泡的RGB三色燈泡的強度。強度從0~255,0最暗,255最亮。

上面的寫法,就會讓第一個燈泡(編號0)的紅色亮度為128,綠色亮度為0;然後編號越大,紅燈越暗,綠燈越亮,這樣就會跑出漸層的顏色囉。


教學部份,則是要觀察各種不同RGB比例可以組合出來的顏色。

每個燈泡都做成純色,這樣比較好觀察。然後只要有個燈罩或者光可以照射上的白色物體,就可以看到混色後的顏色。

第一個是純紅色


然後配上一點點綠,看到杯子變成橘色了嗎?

綠色再開強一點,被子就變成黃色了。

綠色再強一點,看不太出紅色的感覺了。

純綠色的顏色,和上面好像也沒有差太多。

綠色家藍色,變成青色


紅色加藍色變成洋紅


紅綠藍色都開,會變成白色。不過看起來好像有點藍啊...


張貼留言