用Node.js控制多个MAX7219

Control multiple MAX7219 with Node.js

我一直在尝试控制 4 个 MAX7219 控制的 8x8 LED 阵列,总计 8x32 "screen"。它们采用菊花链式连接,as seen here.

根据我收集到的信息,我必须为我的所有阵列发送数据;每个MAX7219都会处理自己的数据,剩下的数据"overflow"交给下一个MAX7219处理。

当我只在屏幕的一个 "row" 上寻址时,这非常有效:First row getting and displaying the data as intended

实现代码如下:

write = function(register, data) {
    let buf = new Buffer([register, data]);
    this.spi.write(buf, (device, buf2) => {
        let s = "";
        for (let i = 0; i < buf.length; i++)
            s = s + buf[i] + " ";
    });
}

(来自NPM SPI documentation

写入数据:

write(0x01, 0x01);
write(0x01, 0x03);
write(0x01, 0x07);
write(0x01, 0x0F);

当我尝试写入第二行时,问题就开始了。将数据发送到第二行会弄乱第一行,但我无法理解为什么会发生这种情况。

write(0x01, 0x01);
write(0x01, 0x03);
write(0x01, 0x07);
write(0x01, 0x0F);
// Writing to the second row
write(0x02, 0x80);
write(0x02, 0xC0);
write(0x02, 0xE0);
write(0x02, 0xF0);

这导致第二行看起来应该如此,但第一行却乱七八糟:

Second row OK, First row messed up

任何行组合都会发生这种情况。最后一张还好,前面几张都乱了。

我不知道为什么其他行都搞砸了,当它们没有被写入时,超出了确认工作的数据传输...

注意:我正在使用 Raspberry Pi Model B+ V1.2 和 Raspbian; Node.js v8.11.1;

在研究了其他几个存储库之后,(特别感谢 bitbank2 出色的 C++ 存储库),我创建了一个 NPM 包来完成我想要它做的事情:

以非常简单的方式控制多个菊花链 MAX7219 8x8 LED 阵列。

您可以找到 Github repository here, and the NPM Package here.