当我发送蓝牙消息时,我无法接收其他IR代码

时间:2018-02-15 16:10:40

标签: bluetooth arduino infrared

我是Arduino的新手,我不知道如何解决这个问题。

我想发送一个IR代码'''''当Arduino通过蓝牙接收一个角色或者我从遥控器发送另一个IR代码时。

但是,如果我发送字符' a'通过蓝牙,该程序不会捕获任何新的IR消息。

我正在使用连接到引脚12,13的HC-06蓝牙模块和连接到引脚2的IR接收器。

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <IRremote.h> 

IRsend irsend;
unsigned int channel[67] = { 9300, 4300, 700, 1400, 800, 1350, 800, 1400, 700, 1450, 700, 1450, 750, 1350, 800, 1350, 750, 1400, 750, 400, 750, 350, 800, 300, 800, 300, 800, 350, 750, 350, 750, 400, 700, 400, 750, 1400, 750, 350, 750, 350, 750, 350, 800, 1400, 750, 1400, 750, 350, 750, 400, 700, 350, 800, 1400, 750, 1350, 750, 1450, 750, 300, 800, 350, 800, 1350, 750, 1400, 750};
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;  
SoftwareSerial BT1(12,13);
char incomingChar = 0;

void setup() {
  irrecv.enableIRIn();
  Serial.begin(9600);
  BT1.begin(9600);
}

void loop() {
  if (irrecv.decode(&results)) {
    int hexen = results.value;
    Serial.println(hexen, HEX);
    Serial.print("\t");
    Serial.println(hexen, DEC);
    irrecv.resume();
    if(hexen == -16833) {
      Serial.print("Hello");
    }
  }
  if (BT1.available()) {
    incomingChar = BT1.read();
    Serial.print("->: ");
    Serial.println(incomingChar);
    if (incomingChar=='a') {
      Serial.print(" Send ");
      Send();
    }
    if (incomingChar=='s') {
      Serial.print("Test");
    }
  }
}

void Send() {
  irsend.sendRaw(channel,67,38);
  delay(40);
}

这是irsend.sendRaw的问题,还是与蓝牙有某种冲突?

1 个答案:

答案 0 :(得分:0)

已解决,只需再次启用IR接收器

void Send() {
  irsend.sendRaw(channel,67,38);
  delay(40);
  irrecv.enableIRIn(); 
}