
Arduinoで圧電スピーカーを鳴らしながら赤外線リモコン(IRremote)を使おうとしたところ、
ToneライブラリとIRremoteライブラリが同時に動作しない問題にハマりました。
結論から言うと、
IRremote と Tone は同じタイマーを使用しているため併用できません。
この場合は「NewToneライブラリ」を使えば解決できます。
この記事では、
・なぜ同時使用できないのか
・実際の不具合内容
・NewToneでの解決方法
をまとめます。
IRremoteライブラリとToneライブラリは同時使用できない!
Arduinoと圧電スピーカーでマリオやらゼルダを奏でてみたいと思い、リモコンの「1」を押したらマリオのメロディー、「2」を押したらゼルダのメロディーみたいな仕様にして作ってみたのですが、「Tone」ライブラリを使用してプログラムを作成したところ、まったくうまく動きませんでした。
具体的にはリモコンの信号を1回でも受信すると、その後正常にリモコン信号を受信できなくなりました。こういった意味不明な動きをするときは自分の実装レベルでバグらせているというより深いところに原因があることが多いので、いろいろ調べました。そして発見しました。
「IRremote」ライブラリと「Tone」ライブラリが同じタイマーを使用していることを!
ライブラリの中を詳しくは見ていないのですが、同じタイマーを使用しているのであればそれぞれのライブラリで好き勝手にタイマークリアとかするはずなので、うまく動くはずがありませんね。。。
Arduinoはタイマー0、タイマー1、タイマー2とタイマーを3本持っているので、どちらかのライブラリの中を変更して使用するタイマーを変更すればよいのですが、ライブラリの中を変更して、また入れなおすのは手間です。。。「誰か、作ってくれてないかなぁ」と思って探したら、[Timer1]を使って音を鳴らすライブラリ、「NewTone」ライブラリがありました!
やはり、困ったときはだれかがやってくれてることを期待して探すに限る笑
世の中の優秀な方々はけっこういろいろやってくださっています^^
ということで、「NewTone」ライブラリを使用して解決です。
NewToneライブラリをインストール
NewToneライブラリは以下のサイトからダウンロードできます。簡単にインストール手順を説明します。
まず、上記のサイトからNewTone_v1.0.zipをダウンロードします。

Arduino IDEからダウンロードしたzipファイルを読み込みます。「スケッチ」→「ライブラリをインクルード」→「.ZIP形式の・・・」から読み込みます。

以上でインストールは完了。ソースコードにて「#include <NewTone.h>」を記述することでライブラリの関数が使用できるようになります。
以上、とても簡単ですが、今回はNewToneライブラリについて紹介させていただきました。
まとめ
今回はNewToneライブラリについて紹介させていただきましたが、IRremoteライブラリなどを使用しないのであれば、「Tone」ライブラリで問題ありません。
余談ですが、タイマーを使用しているライブラリ使用時にそのタイマーを使用して割り込みなどは作れません。(当然ですが)
例えば、今回の記事の例だとIRremoteライブラリでタイマー1、NewToneライブラリでタイマー1を使用しておりますので、もし定期的に割り込みを作りたい処理が出てきたら、残っているタイマー0を使うことになります。またタイマーの制御については別の記事で紹介したいと思います。
ちなみに、今回の記事で紹介したメロディープログラムの完成形は以下で紹介しております。
こちらもCHECK
-

【Arduino入門】圧電スピーカーでメロディ再生|配線とコード完全解説
Arduinoと圧電スピーカーを使って、ゲームのメロディーを鳴らしてみました。 今回は、 ・リモコン入力で曲を切り替える ・マリオの1UP音とゼルダの謎解き音を再生する という簡単な電子工作を紹介しま ...
続きを見る
✅ ITキャリアを育てるコミュニティ「ITキャリアラボ」
「独学だと続かない…」
「相談できる人がいない…」
「同じ目標の仲間がほしい…」
そんな方向けに、
無料のLINEコミュニティ『ITキャリアラボ』を運営しています。
エンジニア歴20年・講師の僕が、
・資格学習のコツ
・勉強法アドバイス
・キャリア相談
・IT業界のリアル情報
などを発信&質問対応しています。
📌 参加無料・匿名OK・LINEだけで完結
📌 まずは「話を聞くだけ」でも大歓迎
独学で悩む時間を減らしたい人は、気軽に頼ってください。
👇お気軽にどうぞ
ITキャリアラボ
-

【無料】ITの悩みを気軽に相談できるコミュニティ・ITキャリアラボ
IT業界を目指すあなたへ|「ITキャリアラボ」無料コミュニティのご案内 「IT業界に転職したいけど、何から始めればいいかわからない…」「資格の勉強が続かない…」「相談できる人がいない…」 そんな不安、 ...
続きを見る