この記事では音楽が再生している間はLEDを付けるように制御してみます。このような記事はネットで見つからなかったので、自分で作成してみました。
DFPlayer Miniの音楽再生方法がわからない方はこちらの記事(https://qiita.com/ajimaru/items/dfd1e75d8de20980f665)
を参考にしていただくと、理解が深まると思います
準備
・Arduino UNO R3
・DFPlayerMini 秋月商店で購入可能
・マイクロSDカード 32GB以下でフォーマット形式がFAT16またはFAT32であること
・ジャンパワイヤ
・スピーカ
・LED 2個
・抵抗器1kΩ 2本
・抵抗器200Ω 1本
配線
まず、df playerでは、 vccなどのピンを使ってましたが、今回は再生中にLEDをつけたいので、busyピンというのを使います。これは再生中はLOW、再生中でないときはHIGHとなるのでこれを利用して、LEDを付けたり消したりします。
また、LEDの点灯ですが、こちらは電流を安定させるために抵抗器200Ωを入れてます。
コード
コードは次のようになります。LEDとBUSYピンを追加してます。
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
// DFPlayer MiniとArduinoのシリアル通信用
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
const int busyPin = 4; // DFPlayer MiniのBUSYピン
const int ledPin = 9; // LEDを接続するピン
void play_sound(int folder,int file){
int end_flg = 0;
myDFPlayer.playFolder(folder, file);
LOOP:
// BUSYピンがLOWなら再生中
if (digitalRead(busyPin) == LOW) {
digitalWrite(ledPin, HIGH); // LEDを点灯
Serial.println("0");
end_flg = 1;
} else {
digitalWrite(ledPin, LOW); // LEDを消灯
Serial.println("1");
if(end_flg == 1) end_flg = 2;
}
if(end_flg != 2) goto LOOP;
}
void setup() {
// シリアル通信の初期化
Serial.begin(115200);
mySoftwareSerial.begin(9600);
// DFPlayerの初期化
if (!myDFPlayer.begin(mySoftwareSerial)) {
Serial.println("DFPlayer Miniの初期化に失敗しました");
while(true);
}
// LEDピンとBUSYピンのモード設定
pinMode(ledPin, OUTPUT);
pinMode(busyPin, INPUT);
Serial.println("DFPlayer Miniの初期化が成功しました");
// ボリューム設定
myDFPlayer.volume(30); // 音量を0-30の範囲で設定
}
void loop() {
play_sound(1,1);
delay(1000);
play_sound(99,100);
delay(1000);
play_sound(99,103);
delay(1000);
}
音楽を再生する関数では、音楽が鳴り終わるまでは次の音楽を再生しないようにendflagをたててます。最初は0で再生しだすと1でたてて、再生し終えると2にします。それにより、2ということは終わってるので再生関数を抜けられます。
void play_sound(int folder,int file){
int end_flg = 0;
myDFPlayer.playFolder(folder, file);
LOOP:
// BUSYピンがLOWなら再生中
if (digitalRead(busyPin) == LOW) {
digitalWrite(ledPin, HIGH); // LEDを点灯
Serial.println("0");
end_flg = 1;
} else {
digitalWrite(ledPin, LOW); // LEDを消灯
Serial.println("1");
if(end_flg == 1) end_flg = 2;
}
if(end_flg != 2) goto LOOP;
}
テスト
テストしたところ、再生中はランプが光り、再生してない場合は消えてるのでオーケーとなりました。
最後に
以上が音楽再生中でのLEDの点灯方法でした。ご意見感想などあればぜひコメントしてください。