RGBmatrixPanel 库干扰 IRremote 库

问题描述

我想我在 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 库的源代码表明您可以更改使用的计时器。

我建议您仔细阅读这两个库的代码和文档。