ここから本文です

Arduinoで作成するプログラムについての質問です。 DFPlayer Mini を使ってArdu...

kn2********さん

2019/10/1818:03:16

Arduinoで作成するプログラムについての質問です。

DFPlayer Mini を使ってArduinoで音声(MP3)を再生するプログラムを作成しています。

その中で、二つボタンあり、一方を押すと、音量が上がり、もう一方を押すと、音量が下がるようなプログラムを作成したいです。

今のところ下のようになっていて、音声を再生することは出来るのですが、音量の上げ下げをどのように書けば良いのか分かりません。

音量は0~30までのようなので、
BUTTON1を押すと+5
BUTTON2を押すと-5
となるようにしたいです。

ご回答よろしくお願いします。


#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial mySerial(11, 10); // RX, TX

int BUTTON1_SOCKET = 2;
int BUTTON2_SOCKET = 3;

void setup () {
Serial.begin (9600);
mySerial.begin (9600);
mp3_set_serial (mySerial);
mp3_set_volume (10);
}


void loop () {
mp3_play ();
}

閲覧数:
29
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

nac_tnkさん

2019/10/1910:52:14

DFPlayerのデータシート(FN-M16P Embedded MP3 Audio Module)は見ていますか?
元々、シンプルなコントロールなら、Arduino無しで、抵抗とスイッチを付ければ操作できるようになっています。
(再生、一時停止、リピート、ヴォリューム+-、次の曲、など)

Arduinoを使うというのは、例えばLCDを付けて、もっと操作性を良くしたり、凝ったものを作りたい場合にArduinoを使います。

で、質問内容(現在のスケッチ)を見ると、これならそのまま配線すればいいのに、と思うのですけど。

まぁ、一応質問に答えると、

int vol=10;
byte b1,b2;

と外部変数で宣言して、setup関数で

pinMode(BUTTON1_SOCKET,INPUT_PULLUP);
pinMode(BUTTON2_SOCKET,INPUT_PULLUP);

とプルアップ入力にしておいて、ループ関数で下記のスイッチ読み取り→ボリューム操作を行えばいいです。

if(digitalRead(BUTTON1_SOCKET))b1=0;
else if(b1==0){//ボタン1が押された瞬間
b1=1;
vol+=5;
if(vol>30)vol=30;
mp3_set_volume(vol);
}

if(digitalRead(BUTTON2_SOCKET))b2=0;
else if(b2==0){//ボタン2が押された瞬間
b2=1;
vol-=5;
if(vol<0)vol=0;
mp3_set_volume(vol);
}
delay(5);

ただし、mp3_play関数はループ中に何度も行うものでは無いでしょうから、
テストならsetup関数内に書いておいた方が良いです。

質問した人からのコメント

2019/10/20 14:48:15

ありがとうございます。できました。
最終的には、SONYのMESHを使用して、スピーカーを制御したかったのですが、ArduinoとMESHを繋げてArduinoに入力することはできても、スピーカーをArduinoで制御する方法が分からなかったので、このような質問をさせて頂きました。
本当にありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

2019/10/1911:10:32

とりあえず、ボタンが押されたらLEDが点灯する、もう一回押されると消灯する、というプログラムは組めますか? それよりも難しい話になるので。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる