我一直试图控制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] + " ";
});
}
写数据:
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;
答案 0 :(得分:0)
研究了其他一些存储库后(特别感谢bitbank2出色的C ++存储库),并且我创建了一个NPM软件包来完全按照我的意愿进行操作:
以非常简单的方式控制多个菊花链式MAX7219 8x8 LED阵列。