12/10/07 10:24:03.06 uee5tQZg
Arduinoで赤外線受信のサンプルプログラムを作ってみました。
赤外線受信センサは"SPS-440-1"です。
#define LEDPIN 13
#define RECVPIN 2
int state;
void setup(){
Serial.begin(9600);
pinMode(LEDPIN, OUTPUT);
pinMode(RECVPIN, INPUT);
}
void loop(){
state = digitalRead(RECVPIN);
Serial.println(state);
digitalWrite(LEDPIN, !state);
}
これでテレビ等のリモコンで赤外線を送ると、確かに反応するのですが、
赤外線を全く送っていない時にも定期的に一瞬反応してしまいます。
シリアルモニタを見ていると、基本はずっと1の羅列なのですが、
定期的に0が1つ、もしくは2つ流れ込んでくる感じです。
(もちろん、それに合わせてLEDが一瞬光ります。)
Arduinoをよく見ていると、LEDが光るときに、TXのところが同じタイミングで一瞬光っていました。
ネットで調べてみると、TXはシリアル通信をした時に光る?ようなので、
一度、Serial.printlnをソースコードから削除して様子を見てみたら、
今度はTXと連動してLEDが光る事はなくなりました。
しかし、今度はArduino基盤のLが定期的に光るようになり、それに連動する形でLEDが光るようになりました。
リモコンとかのプロトコルを見てみたいのですが、
定期的に変な赤外線を受信(しているのかどうか分りませんが)していたら
プロトコルをまともに見ることができなくて困っています。
原因が分かる方いらっしゃいますでしょうか?
ちなみに、電源供給をUSBからではなく、乾電池から動かした場合は、
定期的にLEDが一瞬光る現象はないようです。
しかし、その場合はシリアルモニタで観察できないので、
プロトコルを見ることができません。。。
詳しい方、何か原因みたいなこと分かれば教えていただければ幸いです。