用Node.js控制多个MAX7219

时间:2018-08-05 16:03:35

标签: node.js memory raspberry-pi buffer spi

我一直试图控制4个MAX7219控制的8x8 LED阵列,总共有8x32的“屏幕”。它们是菊花链式as seen here

从我收集的数据来看,我必须为我所有的数组发送数据。每个MAX7219都将处理自己的数据,其余数据将“溢出”到下一个MAX7219进行处理。

当我仅处理屏幕的一个“行”时,此方法非常好: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

任何行组合都会发生这种情况。最后一个可以,而前面的一个就搞砸了。

我不知道为什么其他行在不被写入的情况下都被弄乱了,除了已确认有效的数据传输...

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

1 个答案:

答案 0 :(得分:0)

研究了其他一些存储库后(特别感谢bitbank2出色的C ++存储库),并且我创建了一个NPM软件包来完全按照我的意愿进行操作:

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

您可以找到Github repository hereNPM Package here