2015年4月24日 星期五

用 AVR 控制 WS2812 LED



最近看到這款新型的 LED
LED 只有亮和暗兩種狀態, 所以如果要半亮或微亮就必須用 PWM 快速的開關來產生半亮效果
一顆 LED 不難做, 但是如果要彩色那就是個機車的問題
彩色 LED 是三種顏色的 LED 做在一起, 也就是紅藍綠三色
然後透過 PWM 改變三種顏色的亮度來產生多種顏色, 三種顏色就要三通道 PWM
PWM 不一定要硬體 PWM, 可以用一個 timer 加上無限迴圈一直監看數字然後設 GPIO
但是有幾通道就要有幾隻腳, 一個燈就要三隻, 多燈共用又有亮度問題
若分到的時間太少就不夠亮, 這問題是很機車的
所以 WS2812 這顆只需要一隻腳就能串接無限顆的彩色 LED 簡直是救星XD
不過因為只有一隻腳, 不像 SPI 那樣有同步 clock, 因此時間就要算得很準才行