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(); // 受信機をリセットする
}
}
参考になれば幸いです。