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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

1回答

5306閲覧

【Arduino】IRremote を併用しようとするとエラーが発生する

shun-

総合スコア14

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2020/04/13 14:48

#やりたいこと
赤外線センサで信号をもらってメッセージをLCDディスプレイに表示、受動ブザーで音楽を再生する。

#コード
サンプルコードを流用しているので汚いですが、よろしくお願いします。

/* * レベルアップしてステータスを表示,音を鳴らす */ #include "pitches.h" #include <LiquidCrystal.h> #include "IRremote.h" #define MI 5 int receiver = 2; IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; // create instance of 'decode_results' LiquidCrystal lcd(7, 8, 9, 10, 11, 12); class Levelup { int melody[3] = {NOTE_DS5, NOTE_F5, NOTE_G5}; int order[7] = {1, 1, 1, 1, 0, 2, 1}; int duration = 150; int duration2 = 750; //音を鳴らす public: void levelup() { for(int i = 0; i < 4; i++){ tone(MI, melody[order[i]], duration); delay(150); } delay(150); tone(MI,melody[order[4]], duration); delay(300); tone(MI,melody[order[5]], duration); delay(300); tone(MI,melody[order[6]], duration2); delay(1500); } }; Levelup lu; void translateIR() // describing Remote IR codes { switch(results.value) { case 0xFFA25D: Serial.println("POWER"); //モニター表示 lcd.setCursor(0,1); lcd.print("Level Up!"); lu.levelup(); Serial.println("Level Up!!"); lcd.setCursor(0,1); lcd.print(" "); break; ~省略~ } //END translateIR void setup() { pinMode(MI, OUTPUT); Serial.begin(9600); while(! Serial); Serial.println("Levelup Number 0"); Serial.println("IR Receiver Button Decode"); irrecv.enableIRIn(); // Start the receiver lcd.begin(16, 2); lcd.print("Press 0 !"); } void loop() { if(Serial.available()) { char ch = Serial.read(); if (ch == '0') { //モニター表示 lcd.setCursor(0,1); lcd.print("Level Up!"); int buzzer = ch - '0'; lu.levelup(); Serial.println("Level Up!!"); lcd.setCursor(0,1); lcd.print(" "); } } if (irrecv.decode(&results)) // have we received an IR signal? { translateIR(); irrecv.resume(); // receive the next value } }

#error

Arduino:1.8.12 (Windows 10), ボード:"Arduino Uno" ~関係内であろう部分を省略(入りきらないので)~ (.text+0x0): multiple definition of `__vector_7' C:\Users\myname\AppData\Local\Temp\arduino_build_598703\libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status 次のフォルダのライブラリpitchesを使用中:C:\Users\myname\OneDrive\ドキュメント\Arduino\libraries\pitches (legacy) 次のフォルダのライブラリLiquidCrystalバージョン1.0.7を使用中:C:\Program Files (x86)\Arduino\libraries\LiquidCrystal 次のフォルダのライブラリIRremoteを使用中:C:\Users\myname\OneDrive\ドキュメント\Arduino\libraries\IRremote (legacy) exit status 1 ボードArduino Unoに対するコンパイル時にエラーが発生しました。

IRremoteを使わないとうまくいくのですが、つかうとうまくいきません。
個人で解決出来ませんのでよろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

IRremote , tone 共に Timer2 割り込みを必要とする為です

対策には、

(1) NewTone ライブラリを使う Timer1割り込みを使用
https://bitbucket.org/teckel12/arduino-new-tone/wiki/Home

(2) 直接ポートを操作して 音を発生させる TimerFreeTone
https://bitbucket.org/teckel12/arduino-timer-free-tone/wiki/Home

(3) IRremote ライブラリ タイマ割り込み番号を変更する 2→1
https://github.com/z3t0/Arduino-IRremote

(4) tone ライブラリ タイマ割り込み番号を変更する
https://github.com/bhagman/Tone#ugly-details

等があります。

引用元
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10220482555

投稿2020/04/13 21:09

koujikuu

総合スコア401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shun-

2020/04/14 08:10

ご回答ありがとうございました。 (1),(2)を試してみましたがうまくいきませんでした。 (3),(4)はどういじったらいいかわかりませんでした。 ほかに原因があるのでしょうか。
Teppy

2020/05/28 10:46

こちらが参考になるかもしれません。 https://miso-engine.hatenablog.com/entry/2015/07/20/221014 要はIRremote,toneが同じTimer2割り込みを使用している為、どちらかが他のTimerを使用を使用すれば?という事だと思います。 ※Timer2を複数で使用できない。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問