IR LED 不发送任何信号

问题描述 投票:0回答:1

我正在开发一个用arduino控制电视的项目。为了模仿遥控器,我尝试使用红外 LED 发送信号。但是,它没有发送任何内容。我正在 arduino nano 上运行此代码。以下是我正在使用的代码:

#include <IRremote.h>
 
// Define switch pin
const int switchPin = 7;
 
// Define a variable for the button state
int buttonState = 0;
 
// Create IR Send Object
IRsend irsend;
 
void setup()
{
  // Set Switch pin as Input
  pinMode(switchPin, INPUT);
  Serial.begin(9600);
}
 
void loop() {
  
  // Set button state depending upon switch position
  buttonState = digitalRead(switchPin);
  
  // If button is pressed send power code command
   if (buttonState == HIGH) {
    irsend.sendSony(0x24052816, 20); // TV power code
    Serial.print("1");
  }
      
    // Add a small delay before repeating
    delay(200);
 
}

(注意这不是我的代码,我是根据我找到的网站修改的)。

我还使用arduino uno制作了一个红外接收器程序,当我按下电视遥控器上的按钮时,该程序正在工作并显示。我已经使用该程序尝试查看我的 LED 是否正在传输任何内容,但它在串行监视器中没有显示任何内容。如果有帮助,这是我用于接收器的代码:

#include <IRremote.h>
 
// Define sensor pin
const int RECV_PIN = 4;
 
// Define IR Receiver and Results Objects
IRrecv irrecv(RECV_PIN);
decode_results results;
 
void setup(){
  // Serial Monitor @ 9600 baud
  Serial.begin(9600);
  // Enable the IR Receiver
  irrecv.enableIRIn();
}
 
void loop(){
  if (irrecv.decode(&results)){
    // Print Code in HEX
        Serial.println(results.value, HEX);
        irrecv.resume();
  }
}

我尝试在 LED 上使用 100 欧姆和 220 欧姆电阻。我知道接线不是问题,因为它适用于普通 LED。我尝试更换 IR LED,但它们都遇到了同样的问题。另外,我用万用表检查了二极管是否正常,万用表返回约 0.8 伏。有人知道我的代码或电路本身可能有什么问题吗?如果您对如何让 arduino 控制我的电视有任何其他想法,我也会感兴趣。

提前致谢, 蒂姆

arduino arduino-uno led infrared remote-control
1个回答
0
投票

这里有几件事。

irsend.sendSony()
的第二个参数是第一个参数中提供的位数。在您的情况下,您有:
irsend.sendSony(0x24052816, 20)
- 0x24052816 是 32 位。

第二个问题是,当发送到索尼时,您需要重复发送调用 3 次,间隔 40 毫秒。这应该发送索尼开机/关机代码:

for (int i = 0; i < 3; i++) {
    irsend.sendSony(0xa90, 12); // 12 bit wide Sony TV power code
    delay(40);
}

如果您将其放入您的程序中,它现在应该可以工作了。如果没有,您应该仔细检查您的 IRLED 是否位于引脚 3 上。我发现我的 IRLED 在使用 330 欧姆电阻时工作正常,因此您的 220 欧姆电阻应该没问题。如果您仍然不满意,您可能需要查看示波器上的引脚 3,以检查发送到它的脉冲。

© www.soinside.com 2019 - 2024. All rights reserved.