購入してから数か月眠らせていたDFPlayer Proをようやく触りました!

 

 

 

はんだ付けが必要なので、ちょっと見送ってたんですよね…。

別に苦手じゃないんだけど。

 

 

今回は、明確に作りたい物のイメージがありました。

 

作りたいもの(機能)

・ボタンが2つあり、それぞれで異なる音声を再生させる

  ボタンA → 「1.wav」を再生

  ボタンB → 「2.wav」を再生

・ボタンAは+1ずつインクリメント、ボタンBは9999を7セグに表示させる

 

こんな感じのものです。

なので、準備するのは下記のパーツ

 

使ったもの

  • Arduino nano
  • DFPlayer Pro
  • スピーカー
  • ボタン(2個)
  • VOICEVOX

 

Arduinoでの7セグの使い方はこちら。

 

 

VOICEVOXというサービスは、商用・非商用問わず無料で使えるテキスト読み上げソフトウェアです。

利用規約がありますが、ハードルは高くありません。

 

今回使用した音声データは、こちらのソフトを使用して作成しました。

 

 

 

DFPlayerProの使い方は、公式のWikiから読み解いていきました。

 

Githubにも、同様の情報があります。

 

 

まずは、Arduino IDEのライブラリに「DFRobot_DF1201S」を追加します。

検索すればすぐ見つかるので、ここは問題無いと思います。

 

 

DFPlayerProの良いところは、PCとUSB接続すると通常のUSBメモリを扱うようにファイルを追加できる点です。

 

このようにして、ファイルを2つドラッグ&ドロップでDFPlayerProに入れます。

名前はシンプルに「1.wav」「2.wav」にしました。

 

 

あとはサンプルプログラムを見ながら、使いたい部分を取り出します。

今回私が変更した部分は2箇所。

 // ALLCYCLE → SINGLE
  DF1201S.setPlayMode(DF1201S.SINGLE);

 

  // 空欄 → 1,2をそれぞれ追加

  DF1201S.playFileNum(1); // 1.wav の再生

  DF1201S.playFileNum(2); // 2.wav の再生

ALLCYCLEだと、DFPlayerPro内のファイルを順番に延々と繰り返し再生してしまいます。

ボタンを押したら1回だけ再生させたかったので、ここのパラメータはSINGLEに変更しました。

 

再生するファイルを指定する為、playFileNumで数字を指定しました。

たまたま数字のファイル名にしていましたが、ファイル名が文字列の場合はどうなるのか試していません。

 

 

あとは、必要な部品を繋いでいきます。

今回は下記のような感じで接続しました。

結構シンプルな配線になります。

スピーカーは1つしか無かったので、DFPlayerProのL+L-に接続しました。

 

 

配線済みの様子がこちら。

 

 

では、動作確認の様子をご覧ください!

 

 

推しがラジオで例のボタンについて話していたので、勢いで作っちゃいました。

色んなところに電子工作のヒントがありますね~。

とっても楽しかったです!

 

 

最後に、スケッチを残しておきます。

// 7seg用
#include <TM1637.h>
#define PIN_CLK (5) //D5pin
#define PIN_DIO (6) //D6pin
TM1637 tm(PIN_CLK, PIN_DIO);
int i;


// BTN
int BTN_A=0;
int BTN_B=0;


// DFPlayerPro用
#include <DFRobot_DF1201S.h>
#include <SoftwareSerial.h>
SoftwareSerial DF1201SSerial(2, 3);  //RX  TX
DFRobot_DF1201S DF1201S;

void setup(void){
  // DFPlayerPro
  Serial.begin(115200);
  DF1201SSerial.begin(115200);
  while(!DF1201S.begin(DF1201SSerial)){
    Serial.println("Init failed, please check the wire connection!");
    delay(1000);
  }
  /*Set volume to 20*/
  DF1201S.setVol(20);
  /*Enter music mode*/
  DF1201S.switchFunction(DF1201S.MUSIC);
  delay(2000);
  DF1201S.setPlayMode(DF1201S.SINGLE);

  // 7seg
  tm.init();
  tm.set(BRIGHT_TYPICAL);
  tm.clearDisplay();
  i=0; //リセットボタンで7seg初期化する


  // BTN
  pinMode(8, INPUT);
  pinMode(9, INPUT);
}

void loop(){
  // ボタンが押された時=LOWになる
  BTN_A = digitalRead(8);
    if (BTN_A==LOW){
    i++;
    DF1201S.playFileNum(1); // 1.wav
  delay(75);
  }
  BTN_B = digitalRead(9);
    if (BTN_B==LOW){
    i=9999;
    DF1201S.playFileNum(2); // 2.wav
  delay(75);
  }
  //4桁の7セグに表示
  tm.displayNum(i);
}

 

色々と買い揃えておくと、必要な時にサッと作れていいですよね。

もう無駄遣いなんて言わせない…!