質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.03%

赤外線リモコン受信モジュールとリモコンで16進数っぽいので決めたLEDを光らせたいのですがどう書けばいいのかわかりません。

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 1,312

OtoMura

score 17

int ir = 7;
int A = 13;
int B = 12;
int C = 11;

void setup() {
  Serial.begin(9800); //モニターに出力するための設定
  pinMode(ir,INPUT); //2ピンに接続した赤外線センサ
  pinMode(A,OUTPUT); //3ピンに接続したLED  
  pinMode(B,OUTPUT);
  pinMode(C,OUTPUT);
}

void loop() {

  if(digitalRead(ir)==8F71FE0){  ここがダメでした
    digitalWrite(A,HIGH);
    delay(80);
  }else{
    digitalWrite(A,LOW);
  }


}


8F71FE0というのでひかるLEDを決めて光らせたいです。
うまくいったらこれを3つつけてできるのか試したいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+1

https://deviceplus.jp/hobby/entry023/

こちらを参考にしてみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/19 22:02

    ありがとうございます。
    ちょっと試して見ます。

    キャンセル

  • 2018/10/19 22:18 編集

    すみません。わかりませんでした。
    よければ具体的なプログラムを書いて貼ってもらえますか?

    キャンセル

  • 2018/10/20 12:56

    ありがとうございました。
    どうにかできました。

    キャンセル

+1

Arduinoには、IRremoteという赤外線リモコン用のライブラリがあるので、それを利用すべきだと思います。
(自由自在にArduinoのハードウェアと、プログラムを操れるようになってから、自前のコードの開発にかかったのほうが良いです)

Arduinoで赤外線リモコンの値を読み取り、送信する方法のような記事が参考になるでしょう。

==
digitalRead(inputPin)という関数は、inputPinで指定した入力ピンに入っている電圧が低い(LOW)か高い(HIGH)かを返すものです。

赤外線リモコンから出力される赤外線の波形が返される訳ではありません。

この説明で、下記の部分のコードでは、なぜダメかという事が理解できますか?

  if(digitalRead(ir)==8F71FE0){  ここがダメでした

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/18 22:50

    返信遅れてすみません。
    赤外線リモコン関係を初めて扱ったのでそのコードのダメな理由もわからずとりあえずつ作ろうというノリで作りました。
    すみませんが理由と正しいコードを教えてもらえますか?

    キャンセル

  • 2018/10/20 12:56

    ありがとうございました。

    キャンセル

check解決した方法

0

このプログラムはIRremoteの必要なとこを抜き出して作ったものです。

include <IRremote.h>

int recvPin = 7;
IRrecv irrecv(recvPin);

void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}

void  ircode (decode_results *results) {
Serial.print(results->value, HEX);
}
void  dumpInfo (decode_results *results)
{
if (results->overflow) {
Serial.println("IR code too long. Edit IRremoteInt.h and increase RAWLEN");
return;
}
Serial.print(results->value);

if (results->value == 150413280) {   //results->valueに赤外線リモコンから受け取ったそれ
digitalWrite(13, HIGH);            //ぞれのデータが入ってるので(results->value == 
Serial.print("光ったよーー");         //150413280)をいじってやるとうまくいきます。
delay(100);
digitalWrite(13, LOW);
}
if (results->value == 150413025) {
digitalWrite(12, HIGH);
Serial.print("光ったよーー2");
delay(100);
digitalWrite(12, LOW);
}
}

void loop() {
decode_results  results;
if (irrecv.decode(&results)) {  // Grab an IR code
dumpInfo(&results);           // Output the results
Serial.println("");           // Blank line between entries
irrecv.resume();              // Prepare for the next value
}

}

結果

150413280光ったよーー
4294967295
150413280光ったよーー
150413025光ったよーー2
150413280光ったよーー
4294967295
150413280光ったよーー
150413025光ったよーー2

こんな感じでできました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/22 00:23

    if文の赤外線リモコンから受け取ったデータを10進で150413280と記載していますが
    16進で表記する際は0x08F71FE0と先頭に0xをつける必要があります。

    最初の投稿のプログラムでも
    if(digitalRead(ir)==8F71FE0){  ここがダメでした
    と書かれていますが、正しくは
    if(digitalRead(ir)==0x8F71FE0){
    です。但し、修正したからと言って動かないとおもいますが、今後の参考までに。

    キャンセル

  • 2018/10/28 11:01

    なるほどありがとございます

    キャンセル

-1

いまいち意味不明だけど、リモコンのLEDをシリアル通信で光らせてみればお望みのことができるかと思われますが

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/15 22:06

    コードは
    Code : 8F71FE0 (32 bits)
    Timing[67]:
    +9050, -4400 + 650, - 500 + 600, - 500 + 650, - 450
    + 650, - 500 + 600, -1600 + 650, - 500 + 600, - 500
    + 650, - 450 + 650, -1600 + 650, -1550 + 650, -1600
    + 650, -1600 + 600, - 500 + 600, -1600 + 650, -1600
    + 650, -1600 + 600, - 500 + 650, - 450 + 650, - 500
    + 600, -1600 + 650, -1600 + 600, -1600 + 650, -1600
    + 600, -1600 + 650, -1600 + 650, -1550 + 650, -1600
    + 650, - 450 + 650, - 500 + 600, - 500 + 650, - 500
    + 600, - 500 + 600
    unsigned int rawData[67] = {9050,4400, 650,500, 600,500, 650,450, 650,500, 600,1600, 650,500, 600,500, 650,450, 650,1600, 650,1550, 650,1600, 650,1600, 600,500, 600,1600, 650,1600, 650,1600, 600,500, 650,450, 650,500, 600,1600, 650,1600, 600,1600, 650,1600, 600,1600, 650,1600, 650,1550, 650,1600, 650,450, 650,500, 600,500, 650,500, 600,500, 600}; // NEC 8F71FE0
    unsigned int data = 0x8F71FE0;
    の<8F71FE0>だと思うのですがあってますか?

    キャンセル

  • 2018/10/16 07:55

    まずは実際に受信したタイミングをシリアルで出力してみては。
    実際に受信したタイミングをを見比べればどうすればいいかわかるでしょ

    #そのタイミングが安定的に出てくれるのか、もチェックして

    キャンセル

  • 2018/10/20 12:55

    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる
  • トップ
  • Arduinoに関する質問
  • 赤外線リモコン受信モジュールとリモコンで16進数っぽいので決めたLEDを光らせたいのですがどう書けばいいのかわかりません。