问题描述
我想我在 RGBmatrixPanel 库 AKA PxMatrix LED MATRIX 库中发现了一个错误。
我正在使用连接到运行 PxMatrix 1.8.1 版的 64x32 .matrix 板的 Arduino Mega
RGBmatrixPanel 库,或更具体地说,用于初始化和启动板的函数 matrix.begin()
以某种方式干扰了广泛使用的 IRremote 库。
我创建了一个最小可重现示例(如下),可以在其中看到此问题。红外接收器按预期正常工作,但一旦 matrix.begin()
运行,红外接收器停止返回值,而是返回随机 HEX 代码。
注意:红外接收器插入兆欧表的第 3 针 注 2:代码实际上并未向 LED 板打印任何内容,因此很明显 RGBmatrixPanel 库有问题。
#include <RGBmatrixPanel.h>
#include <IRremote.h>
#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3
RGBmatrixPanel matrix(A,B,C,D,CLK,LAT,OE,false,64);
int RECV_PIN = 3;
IRrecv receiver(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
//matrix.begin(); //unslash matrix.begin() for the IRreciver to stop working
receiver.enableIRIn();
}
void loop() {
if(receiver.decode(&results)) {
Serial.println(results.value,HEX);
receiver.resume();
}
}
如果您需要有关此问题的更多信息,我将不胜感激。
提前致谢,艾略特
解决方法
我不确定是什么让你认为这是一个
RGBmatrixPanel 库中的错误
如果与另一个库有冲突。为什么不是 IRRemotes 的错?
其实这不是任何人的错。在你的生活中,你会遇到很多这样的冲突。
如果两个设备有相同的 i2c 地址怎么办?这是谁的错?再一次,没有人。
两个库可能使用相同的计时器。
硬件资源非常有限。你不能给每个图书馆专属的资源。那是行不通的。
快速查看 IRReceiver 库的源代码表明您可以更改使用的计时器。
我建议您仔细阅读这两个库的代码和文档。