Arduino Mp3プレーヤー/タイマー:3ステップ

Arduino Mp3プレーヤー/タイマー:3ステップ

目次:

Anonim

タイマー機能を備えた標準のArduino Mp3プレーヤーです。これは完成品をデモする私のビデオです:http://youtu.be/EpJ-ysjU_DA

用品:

ステップ1:材料

- Arduino Uno - DFプレーヤーMp3モジュール

- LCDキーパッドシールド - たくさんのワイヤー(私はまた少数の男性から女性へのヘッダーを使用しました) - ブレッドボードまたは2つ(あなたが配線に近づく方法によります) - ポテンショメータ - 10kの抵抗(オーディオ品質を向上させるため)ブレッドボードを介してモジュールに接続されています(私はいくつかの古いラップトップスピーカーを使用しました、それが私が2番目の抵抗を使用した理由です) - それにmp3ファイルがあるマイクロSDカードフルプレビュー

ステップ2:配線

デジタルピン4〜10は、シールドのもう一方の端にあるすべてのGND、アナログ、電源ピンなどと共にLCDシールドに接続します。

デジタルピン3(ビデオでは10ですが、そのピンはLCDで使用されているので代わりに3を使用します)および11をMp3モジュールに接続します。

ポテンショメータにはLCDシールドのAnalog 5、Power、およびGNDピンを使用しました。

次のビデオを見て、MP3モジュールの接続方法を確認してください。

ステップ3:コード

// mp3コード:http://educ8s.tv/arduino-mp3-player/

// mp3モジュールのコマンド:http://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#1.29_Serial_Mode

//液晶コード:http://www.hobbytronics.co.uk/arduino-lcd-keypad-shield
//ポテンショメータコード:http://learn.sparkfun.com/tutorials/sik-experiment-guide-for-arduino---v32/experiment-2-reading-a-potentiometer
#include #include "SoftwareSerial.h" SoftwareSerial mySerial(11、3); // arduinoがmp3モジュールと通信するために使用しているピン#define Start_Byte 0x7E#define Version_Byte 0xFF#define Command_Length 0x06#define End_Byte 0xEF#defineアクノレッジ0x00 //エラーチェック
#define ACTIVATED LOW
boolean isPlaying = false; //貼り付けおよび再開のために使用されるint x = 0; // lcd buttons int volume = 0; //音量の調整に使用されますint sensorValue; //ポテンショメータの読み取り値int int = 0を格納します。 int paused = 0; //再開ビジュアルの停止に使用されるint count = 0; int count2 = 0; // timer char high = ' - '; //ビジュアルをdefualt char low = '_'; //ビジュアルの定義を解除します。int visual = 0; //視覚的設定(ドット= 1またはダッシュ= 0)int minutes = -1; int秒= 0。 int timer = 0。 //タイマーは有効になりませんint setting = 0;
//インターフェイスピンの番号LiquidCrystal lcd(8、9、4、5、6、7)を使用してライブラリを初期化します。
int sensorPin = 1; //ポテンショメータは//アナログピン1に接続されています
void setup(){
// LCDの列数と行数を設定します。lcd.begin(16、2); // LCDにメッセージを印刷するlcd.print( "mp3 player");
mySerial.begin(9600); //モジュール遅延(1000)でシリアル通信を開始します。 playFirst(); // SDカードの最初の曲を再生するisPlaying = true;
}
void loop(){
sensorValue = analogRead(sensorPin); //センサー値を取り込みます// //カーソルを列0の1行目に設定します//(注:カウントは0から始まるため、1行目は2行目です):lcd.setCursor(0、1); x = analogRead(0); // lcdボタンvisualizer(); //ビジュアライザを起動
if(timer == 0){if(setting = 0){minutes = -1;秒= 0。 count2 = 0; }}
そうでなければ(timer == 1){if(分> -1){if(count2 == 2){seconds - = 1; count2 = 0; count2 + = 1;
lcd.clear(); lcd.print( "Time:"); lcd.print(分); lcd.print( "min"); lcd.print(秒) lcd.print( "sec");
if(minutes == 0){if(seconds == 0){timer = 0; execute_CMD(0x0E、0、1)。 //再生を一時停止します。isPlaying = false;一時停止= 1。 lcd.clear(); lcd.print( "Time's up");遅延(1000)。 lcd.clear(); lcd.print( "Hit resume、to..");遅延(1200)。 lcd.clear(); lcd.print( "再生を再開します!");
} }
if(seconds == 0){minutes - = 1;秒= 59。 }}
}
switch(sensorValue / 100){//ポテンショメータ音量調整ケース(1):音量= 3; setVolume();ブレーク;ケース(2):容積= 6。 setVolume();ブレーク;ケース(3):容積= 9。 setVolume();ブレーク;ケース(4):容積= 12。 setVolume();ブレーク;ケース(5):容積= 15。 setVolume();ブレーク;ケース(6):容積= 18。 setVolume();ブレーク;ケース(7):容量= 21。 setVolume();ブレーク;ケース(8):容積= 24。 setVolume();ブレーク;ケース(9):容量= 27。 setVolume();ブレーク;ケース(10):容量= 30。 setVolume();ブレーク; }
if(x <60){//右液晶ボタン
if(isPlaying)//次の曲を再生する{playNext();} }
if(visual == 0){//ビジュアル設定をハイに切り替えます= ':'; //ダッシュからドットの数を少なくする= '。'; visual = 1; }
そうでなければ{high = ' - '; //ダッシュlow = '_'に戻ります。 visual = 0; }
if(isPlaying == true){lcd.clear(); lcd.print( "次をプレイ中"); }
そうでなければ(isPlaying == false){lcd.clear(); lcd.print( "Hit Resume"); }}
そうでなければ(x <200){//上のLCDボタン
lcd.clear(); lcd.print( "Time:"); lcd.print(分+ 1);分+ = 1。設定= 1。
}
そうでなければ(x <400){//液晶ボタンタイマー= 1; }
それ以外の場合(x <600){//左液晶ボタン
if(isPlaying)//一時停止/再開{pause();} isPlaying = false; //一時停止するとtureからfalseに変わりますlcd.clear(); lcd.print( "paused"); if(seconds> 0){seconds - = 1;遅延(1000)。 }
そうでなければ(minutes> 0){minutes - = 1;秒= 59。遅延(1000)。 else {isPlaying = true;} // play()を再開するとtrueに戻ります。 lcd.clear(); lcd.print( "playing"); if(seconds> 0){seconds - = 1;遅延(1000)。 }
そうでなければ(minutes> 0){minutes - = 1;秒= 59。遅延(1000)。 }}}
そうでない場合(x <800){//液晶ボタンを選択
if(isPlaying)//前の曲を再生する{playPrevious(); }
if(visual == 0){//ビジュアル設定をハイに切り替えます= ':'; //ダッシュからドットの数を少なくする= '。'; visual = 1; }
そうでなければ{high = ' - '; //ダッシュlow = '_'に戻ります。 visual = 0。 }
if(isPlaying == true){lcd.clear(); lcd.print( "前の演奏"); if(seconds> 0){seconds - = 1;遅延(1000)。 }
そうでなければ(minutes> 0){minutes - = 1;秒= 59。遅延(1000)。 }}
そうでなければ(isPlaying == false){lcd.clear(); lcd.print( "Hit Resume"); if(seconds> 0){delay(1000);秒 - = 1。 }
そうでなければ(分> 0){遅延(1000);分 - = 1。秒= 59。 }}}
遅延(200)。 }
void playFirst()// SDカードで最初の曲を再生する{execute_CMD(0x3F、0、0); //初期化パラメータをmodule delay(250)に送信します。 setVolume(); //音量の遅れ(250)を設定します。 execute_CMD(0x0f、0、1)。 //フォルダexecute_CMD(0x08、0、1)を選択します。 //再生を開始します(繰り返しプレイリスト)}
void pause(){paused = 1;} //ビジュアルを停止しますexecute_CMD(0x0E、0、0); //音楽の遅延を一時停止します(250)。 }
void play(){paused = 0; //ビジュアルの再開execute_CMD(0x0D、0、1); //音楽の遅延を再開する(250); }
void playNext(){execute_CMD(0x01、0、1); //次の曲を再生する(250) }
void playPrevious(){execute_CMD(0x02、0、1); //前の曲の遅延を再生する(250); }
void setVolume(){execute_CMD(0x06、0、volume); //音量(0x00〜0x30)遅延(250)を設定します。 }
void visualizer(){//(int i = 0; i <17; i ++)のvisuals {// 16文字のcharシンボルを表示します。 int level = random(1、6); // 1から6までの数字を選ぶ
if(paused == 1){//一時停止シンボル= lowの場合、ビジュアルを停止します。 }
そうでなければ(level <4){//選択された数に基づいて高値または安値を出力します。symbol = low; }
そうでなければ{symbol = high; }
lcd.print(symbol); //画面の遅延まで印刷する(i / 3 + 5); // iの値に基づいて遅延します
void execute_CMD(バイトCMD、バイトPar1、バイトPar2)//コマンドとパラメータを実行する{//チェックサム(2バイト)を計算するワードチェックサム= - (バージョンバイト+コマンド長+ CMD +確認応答+ Par1 + Par2); //コマンドラインバイトを構築する。Command_line 10 = {Start_Byte、Version_Byte、Command_Length、CMD、確認応答、Par1、Par2、highByte(チェックサム)、lowByte(チェックサム)、End_Byte}; //(byte k = 0; k <10; k ++){mySerial.write(Command_line k); //モジュールにコマンドラインを送信する。 }}