8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduino-IRremoteにおける赤外線送受信の注意

Last updated at Posted at 2015-11-26

Arduino-IRremote( https://github.com/z3t0/Arduino-IRremote )を利用して赤外線を送受信しようとしたとき、

sample.ino
#include <IRremote.h> // 赤外線送受信用ヘッダファイル

int RECV_PIN = 6; // 赤外線受信モジュール
IRrecv irrecv(RECV_PIN); // 赤外線受信用オブジェクトの設定
decode_results results; // 赤外線受信結果を格納する
IRsend irsend; //赤外線送信用オブジェクトの設定

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // 受信を開始する
  irrecv.blink13(true); // 受信時にLEDの点灯を許可する
}

void loop() {
  /* 赤外線を受信したら値を返す */
  if (irrecv.decode(&results)) {
    if (results.decode_type == SONY) {
      if (results.value == 0x3E8) {
        Serial.println("Code 1000");
      }
    } else if (results.decode_type == UNKNOWN) {
      Serial.println("There is an error.");
      irsend.sendSony(0x7D0, 32);
    }
    irrecv.resume(); // 受信機をリセットする
  }
}

のように記述するかと思いますが、このとき一度赤外線を送信すると赤外線の受信が停止してしまうんですよね。

どうやら赤外線受信フラグがリセットされてしまうようで、以下のようにすると上手くいきました。

sample.ino
void loop() {
  /* 赤外線を受信したら値を返す */
  if (irrecv.decode(&results)) {
    if (results.decode_type == SONY) {
      if (results.value == 0x3E8) {
        Serial.println("Code 1000");
      }
    } else if (results.decode_type == UNKNOWN) {
      Serial.println("There is an error.");
      irsend.sendSony(0x7D0, 32);
      irrecv.enableIRIn(); // 受信を開始する
      irrecv.blink13(true); // 受信時にLEDの点灯を許可する
    }
    irrecv.resume(); // 受信機をリセットする
  }
}

参考になれば幸いです。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?