使用Arduino上的红外发射LED发送红外值

5

我有一块Arduino Mega,以及一个红外发射LED,我想要使用这个LED发送我选择的"十六进制数据",我已经尝试过IRRemote Library并成功使用了IRrecv类,但是当我使用IRsend时,我没有收到任何信号,我也尝试用手机相机观察了一下LED。
红外发射引脚是PWM 3,我曾将其连接到3.3V5V

#include <IRremote.h>

IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12); // Sony TV power code
      delay(40);
    }
  }
}

对于接收者:

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

感谢您的帮助 :) Hiso


你使用的是什么类型的红外接收器? - Werner Kvalem Vesterås
@WernerVesterås 这是数据手册 http://arduino-info.wikispaces.com/file/view/IR-Receiver-AX-1838HS.pdf - Haitham Sy
根据故障排除指南,当接收到红外信号时,引脚13上的LED(板载LED)会闪烁。这种情况是否发生? - Werner Kvalem Vesterås
@WernerVesterås 当我单独使用接收示例时,灯会闪烁,但当将两个示例组合在一起时,LED停止闪烁。 - Haitham Sy
这可能是硬件问题。尝试更改LED并检查是否使用了库中相同的PWM引脚。您还可以根据示例将延迟增加到100而不是40。 - praks411
1个回答

4

我已经查看了你提供的IRRemote.cpp库,在头文件中可以看到每个Arduino板都有一个唯一的PWM引脚,用于传输红外数据,因此请使用PWM 9,这在Arduino Mega上可以保证工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接