
arduinoを使い、赤外線センサでリモコンの電波を受信したらサーボモータを動かす回路を作りました。IRreoteのサンプルを使用し、無事動作するようになりました。
赤外線センサとサーボモータを1セット追加して、受信した方のサーボを動かしたいと思ったのですがうまく動作しません。原因を探ったところ、2つの赤外線センサが同じ動きをしている為でした。
回路を簡単にしていったところ、無事動作している回路のGNDと追加の赤外線のGNDのみをつなぐと、追加したセンサも受信できる状態になってしまっています。(Vcc,Voutには接続していません。)
リモコンから送信する信号は一つで、受信するセンサーを2つ付け、受信した側のサーボモータを動かすにはどの様な配線、またはプログラムにしたらよろしいでしょうか?

No.4ベストアンサー
- 回答日時:
原因は他の方が
私は写真を見て酷い配線だなと、マイコンや赤外線センサの誤動作も発生するかと。
対策は、基板に電源が入って来る所に直にブレッドボードの赤黒の配線を接続し、ブレッドボードのサーボモーターへの電源に10μと0.1μのコンデンサを付ける。
サーボモーター1の電源も駄目。茶色基板の電源も青の基板から取る。と言うかここら辺の配線がオカシイぞ。ここら辺を見ただけで、これが大きな原因かと思ってしまう。
指摘されている点について調べてみました。
組んだ回路は、電源ノイズ対策、消費電力の問題など考慮されていないということが分かりました。
もう一度そのあたりの勉強をしてから回路を作成してみます。
アドバイスを頂きありがとうございました。
No.3
- 回答日時:
プログラムの問題ではない。
根本的な部分で誤解していると思う。リモコンの出す赤外線がレーザーみたいに細いラインになっていると思っているなら間違い。実際には結構幅広く放射状に出ているので、一つの赤外線センサーに向けて撃っている積りでも隣の赤外線センサーにも結構な赤外線が入る。感覚的には散弾銃で撃っている感じかな。
射的のようなことをさせたければ発射する方を赤外線リモコンではなく赤外線レーザーにすべき。
アドバイスありがとうございます。リモコン部はレンズで絞るつもりでいますが、まだ試していません。うまくいかないようでしたらレーザー式も調べて検討してみます。

No.1
- 回答日時:
エンジニアとして答えたくても、変な日本語で質問が理解出来んw
やってることも意味不明だから余計にw
説明不足で分かりにくく申し訳ありません。作ろうとしている物は、射的ゲームで、リモコンのLEDを光線銃に見立て、IRセンサーを仕込んだ的に当たったら、サーボモータでその的を寝かせ倒すというものです。的を増やしたいのですがうまく動作しません。
的が一つの場合はいいのですが、2つになったときうまく動作しません。
動作確認が取れているプログラムは以下の通りです。
#include<IRremote.h>
#include<Servo.h>
#define ON 0x807FE11E//「全灯ボタン」
#define OFF 0x807F619E//「消灯ボタン」
int RECV1_PIN = 11;// 赤外線受信モジュール
IRrecv irrecv1(RECV1_PIN);// 赤外線受信用オブジェクトの設定
decode_results results1;// 赤外線受信結果を格納する
Servo myservo1;//Servoオブジェクトの宣言
void setup() {
irrecv1.enableIRIn();// 受信を開始する
myservo1.attach(3);
myservo1.write(90);
}
void loop() {
/* 赤外線を受信したら値を返す */
if (irrecv1.decode(&results1)) {
if (results1.value == ON) {
myservo1.write(180) ;
}
if (results1.value == OFF) {
myservo1.write(0);
}
irrecv1.resume();// 受信機をリセットする
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP のパケットの分断と結合...
-
UDP受信時の通信異常検知について
-
Outlookの「受信日時」「送信者...
-
CRC-CCITTに関しての仕様とサン...
-
VBのMSCommコントロールを使っ...
-
VC++メッセージの送受信につい...
-
赤外線センサーについて
-
recv関数の戻り値について
-
パソコンに詳しい方教えて下さ...
-
別のフォルダにファイルを移動...
-
バッチファイルでディレクトリ...
-
visual studio 2008 libファイ...
-
バックアップ
-
Zipファイルをエクセルに指定変...
-
VBでスタンバイや休止状態か...
-
バックアップの用語
-
ARCserveの復元方法
-
trac/wikiの記法について
-
回復エージェントによるファイ...
-
ipadで社内ネットワークに接続
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
Outlookの「受信日時」「送信者...
-
UDP受信時の通信異常検知について
-
CRC-CCITTに関しての仕様とサン...
-
ASP.NET C#でPOST受信
-
recv関数の戻り値について
-
VB2010で、シリアル通信の方法...
-
HPのメールフォームについて
-
アンテナってあるでしょ?あれC...
-
シリアル通信時のデータ受信方法
-
赤外線通信
-
C#にてCTI。RS232Cの受信と送信...
-
受信処理の終了条件
-
PICを用いた赤外線通信
-
DHCPOFFERの受信について
-
VB2005でTCP/IPソケット通信で...
-
.NetのTimerについて
-
文字化け
-
winsockを使ったTCP及びUDP通信...
おすすめ情報
うまく動作しないプログラム。
#include<Servo.h>
#define ON 0x807FE11E//「全灯ボタン」
#define OFF 0x807F619E//「消灯ボタン」
int RECV1_PIN = 10;
int RECV2_PIN = 11;
IRrecv irrecv1(RECV1_PIN);
IRrecv irrecv2(RECV2_PIN);
decode_results results1;
decode_results results2;
Servo myservo1;//Servoオブジェクトの宣言
Servo myservo2;//Servoオブジェクトの宣言
void setup() {
Serial.begin(9600);
irrecv1.enableIRIn();
irrecv2.enableIRIn();
myservo1.attach(3);
myservo2.attach(4);
myservo1.write(90);
myservo2.write(90);
}
void loop() {
if (irrecv1.decode(&results1)) {
if (results1.value == ON) {
myservo1.write(180) ;
}
if (results1.value == OFF) {
myservo1.write(0);
}
irrecv1.resume();
}
else if (irrecv2.decode(&results2)) {
if (results2.value == ON) {
myservo2.write(45) ;
}
if (results2.value == OFF) {
myservo2.write(0);
}
irrecv2.resume();
}
}