从Arduino向F& D扬声器发送IR信号

时间:2015-12-22 15:09:50

标签: arduino infrared remote-control

我使用下面的代码向我的发言人发送红外信号,但他们没有回复。

#include <IRremote.h>

IRsend irsend;
const int buttonPin = 8; // the number of the pushbutton pin
//const int ledPin = 3;
int buttonState = 0; // variable for reading the pushbutton status
void setup()
{
    // pinMode(ledPin, OUTPUT);
    // initialize the pushbutton pin as an input:
    pinMode(buttonPin, INPUT);
    Serial.begin(9600);
}

void loop() {

    buttonState = digitalRead(buttonPin);

    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) {
        // turn LED on:
        digitalWrite(7,HIGH);
        irsend.sendNEC(0x1FE08F7,32);
    }else{
        digitalWrite(7,LOW);
    }
}

我的其他Arduino的IR接收器接收到信号,但是它们在显示UNKNOWN和有时NEC时有所不同。我使用下面的代码:

#include <IRremote.h>

const int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

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

void loop() {
  if (irrecv.decode(&results)) {
    if (results.decode_type == NEC) {
      Serial.print("NEC: ");
    } else if (results.decode_type == SONY) {
      Serial.print("SONY: ");
    } else if (results.decode_type == RC5) {
      Serial.print("RC5: ");
    } else if (results.decode_type == RC6) {
      Serial.print("RC6: ");
    } else if (results.decode_type == UNKNOWN) {
      Serial.print("UNKNOWN: ");
    }
    Serial.println(results.value, HEX);
     Serial.println(results.value);
    irrecv.resume(); // Receive the next value
  }
}

我收到的NEC代码是正确的,但代码发言人没有回应。我用扬声器附带的遥控器仔细检查了十六进制代码,但似乎没什么用。

1 个答案:

答案 0 :(得分:0)

我认为您可能会遇到HEX文字的问题。 来自Arduino API

  

默认情况下,整数常量被视为int,并伴有值的伴随限制。要使用其他数据类型指定整数常量,请使用以下命令:

     

a&#39; u&#39;或者&#39; U&#39;强制常量为无符号数据格式。示例:33u

     

a&#39; l&#39;或者&#39; L&#39;强制常量为长数据格式。示例:100000L

     

a&#39; ul&#39;或者&#39; UL&#39;强制常量变为无符号长常数。示例:32767ul

来自GitHub

  

void sendNEC(unsigned long data,int nbits);

所以,试试:

irsend.sendNEC(0x01FE08F7UL,32);