我正在尝试使用the NeoPixel module打开特定的LED。它的工作原理非常简单:将它解析成RGB颜色的2D数组。这是一个例子:
require("neopixel").write(NodeMCU.B2, [[255, 0, 0], [0, 255, 0], [0, 0, 255]]);
这将打开红色,绿色和蓝色的前三个LED。我想要一个功能,我可以做一些事情:
function single(number, color) {
require("neopixel").write(NodeMCU.B2, number, color);
}
single(0, [255, 0, 0]);
single(1, [0, 255, 0]);
single(2, [0, 0, 255]);
哪个与上面完全相同。现在您可能会问:为什么要这样?良好:
write()
功能100+ LED,其中大多数是黑色的这样的事情是可能的,还是我必须做一些魔术才能记住最后的LED配置?
答案 0 :(得分:1)
是的,完全 - 值得查看http://www.espruino.com/WS2811的neopixel文档,因为他们建议你使用数组来 存储当前状态。
一旦你有了这个名为arr
的数组 - 你可以使用.set
方法将3个元素设置在正确的位置(数字的3倍,因为RGB),然后可以重新发送整个阵列。
var arr = new Uint8ClampedArray(NUM_OF_LEDS*3);
function single(number, color) {
arr.set(color, number*3);
require("neopixel").write(NodeMCU.B2, arr);
}