2017-04-07 3 views
1

이것은 ws2812 documentation에서 가져온 예입니다 : 모든ws2812b 모듈의 버퍼는 어떻게 작동합니까?

ws2812.init() 
local i, buffer = 0, ws2812.newBuffer(300, 4); buffer:fill(0, 0, 0, 0); tmr.create():alarm(50, 1, function() 
    i = i + 1 
    buffer:fade(2) 
    buffer:set(i % buffer:size() + 1, 0, 0, 0, 255) 
    ws2812.write(buffer) 
end) 

먼저 내가 더 읽기 무언가로이 번역을 시도하고 내가 RGB가 아닌 RGBW LED를 사용하기 때문에, 나는 또한 W 구성 요소 제거 :

local numberOfLeds = 300 
local bytesPerLed = 3 -- (R, G and B) 

ws2812.init() 

local i 
local buffer = 0 

ws2812.newBuffer(numberOfLeds, bytesPerLed) 
buffer:fill(255, 255, 255) 

tmr.create():alarm(50, 1, function() -- repeat every 50 milliseconds 
    i = i + 1 
    buffer:fade(2) 
    buffer:set(i % buffer:size() + 1, 255, 255, 255) 
    ws2812.write(buffer) 
end) 

그래도 나에게 어떤 의미가 없습니다. buffer에 채우기 방법이있는 이유는 무엇입니까? 우리가 단순히 0으로 설정하지 않았습니까? buffer = 0 잘못 번역 했습니까?
원래 코드

local x,y,z = a,b,c 

것은 manual 참조

local x = a 
local y = b 
local z = c 

동등하다 local i, buffer = 0, ws2812.newBuffer(...); ...

답변

1

원래 코드

일반적
local i = 0 
local buffer = ws2812.newBuffer(300, 4); buffer:fill(0, 0, 0, 0); tmr.create():alarm(50, 1, function() 

동등했다.

+0

나는 그것이 더 의미가 있음을 알았다. 고맙습니다. – Forivin