DFPlayerMini・Arduinoプログラミング
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i3ffe383f0176a6d9/version/1692618256/image.jpg)
DFPlayerMiniをArduinoでコントロールする。
一旦ブレットボード上で回路を組み、プログラミングし、動作を確認。
使用するのは、ピックアップワインダー製作の際に購入した
Arduinoスターターキット。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i8cfac5219c3ca001/version/1692618275/image.jpg)
DFPlayerMiniとArduinoは
2本のシリアル接続用線とDC5vの電源線を繋いでやる。
次いで再生STARTボタンとPAUSEボタン、スピーカーを接続。
とにかく接続はシンプルだ。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i0f558f67728706cf/version/1692618385/image.png)
ここからは、専門的だがご容赦。
ArduinoにはLibralyと呼ばれる、便利機能?があり、
これらを拝借すると簡単にプログラミングできる。
DFPlayerMiniとArduinoはシリアル接続するので、
Libraly<SoftwareSerial>を読み込む。
次にDFPlayerを制御するためのLibraly<DFRobotDFPlayerMini>を読み込む。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i4e80bd42de51c0f1/version/1692618423/image.png)
void loop部分は2番のSWがONすると音声ファイルが再生され続け、
3番のSWがONすると1時停止するスケッチ(プログラム)。
ここまでのプログラミングは初心者でも可能だろう。
だが、このプログラムでは、おもちゃのサウンドガンと同様の機能にならない。
サウンドガンは7種類の効果音を内蔵しており、
トリガーを引けば効果音が出て、トリガーを戻すまで音は鳴り続ける。
再びトリガーを引けば、二番目の効果音が出て、
という具合に7種類の効果音がループする。
1つのスイッチのみを使用し、
そのスイッチを押している間だけ音声を再生し、離せば再生が止まり、
再びスイッチを押せば、次の音声ファイルが再生され、
最終トラックが再生されれば、先頭の音声ファイルに戻るように、
ループするプログラムを作成する必要がある。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i83fce88a1283f870/version/1692618454/image.jpg)
ブレットボード上のスイッチを1つにして、プログラムを組み直す。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i4072d51e7828f02c/version/1692618476/image.png)
色々とプログラミングしたが、
スイッチのON/OFFの判定が曖昧なため上手くいかない。
そこで再び、便利機能のLibralyを頼ることに。
Library<ezButton>を読み込んで使用。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sef662617a094ec9f/image/i1ba7510adb8f63f7/version/1692618495/image.png)
問題は一挙に解決。
void loop部分だが、僅か5行で目的の機能を実現。
ボタンが押されると次のトラックが再生され、
ボタンがRelease(離される)されるとPause(1時停止)。
この手のボタン系Libralyは複数あるが、
最もシンプルなezButtonが一番使い易いかもしれない。