● 実験テーマ39
「SD_MP3リスト表示選択方式MP3プレーヤの実験」
(SDカードに収録されている音楽ファイルを、リスト表示し選択再生してみました)
■ 2013.9.7
・今迄、MP3プレーヤは、幾つか作っているが、SDカードに収録されている
音楽ファイルを読出し、それをリスト形式で液晶に表示し、任意のファイルを
選択して、それを再生するプレーヤは、1つも作ったことがない。
WEB検索しても、そのようなプレーヤを、PICで作ったものは見当たらなかった。
・今回は、機能を極、限定し、プログラムもシンプルなものを目指した。
まあ、自分の技量不足ということもあるのだが・・・
・参考コードがあればと、前から探していたが、MP3プレーヤについてのものは
無かった。
しかし、後閑氏HPに、ご自身の著書「LCD活用の素」のダウンロードページ
で紹介されている、「案内表示板」に、MP3ファイルではないが、SDカードに
収録されているBMPファイルを、NTSC方式の単色液晶モニタにリスト選択形式
で表示する例が載っていたので、これを参考にすることにした。
・使うファイルシステムは、同じで、マイクロチップ社の、MDD
File System
FAT16(FAT32互換)である。
ハード上で異なる点は、MPUが、dsPIC33Fに対し、PIC32MX
液晶が、単色7インチNTSC方式 320*224dotに対し
8bitバス制御 128*64dotモノクロである。
・下に、このTESTの目的と、仕様概要を示します。
<このTESTの目的>
@ SDカードに格納されているファイルリストをGLCDに表示してみる。
A SDカードに格納されている、任意の位置の音楽ファイル(MP3及び、WAV)
を読出し、再生する。
<テスト仕様概要>
@ SDに格納されている、MP3ファイルを、8個まで読出し、そのファイルリスト
を、GLCDに表示する(GLCDの、1画面分で表示できるキャラクタ行が、
最大8行なため、これで制限、また今回は、スクロール機能は無しとする。
A SELECT SWで、選択したいファイルの所へ、●キャラクタを移動
B ENTER SWで、選択を確定する。
C ファイル選択が確定したら、選択されたファイルの後ろに
スピーカキャラクタを表示し、その音楽ファイルの再生を行う。
D 再生が終了したら、選択画面を初期化し繰返す。
尚、再生途中で、ESC SWを押すと、再生を中断し、選択画面を初期化
する。
■ 2013.9.9
・ソフト検討開始
とりあえず、ハードは、SDカードと、GLCDのみ用意して、MP3ファイルリスト表示まで
確認してみる。
・注意事項
ファイルシステムとして、マイクロチップ社の、MDD
File System
FAT16(FAT32互換)を使うが、フォルダを用意し、そのフォルダに必要なファイルを
用意し、それをプロジェクトフォルダ下に置くことと、
IDEのプロジェクト・ビルド・オプションで、ビルド結果の出力フォルダ・ディレクトリと
インクルード・パスの設定が必要になる。
■ 2013.9.10
・今回使うモノクロ液晶:SG12864は、縦8行分のキャラクタ表示しか出来ないことと、
リスト表示するファイル数を、切りのいいところで、8ファイルとしたい為、リストの
見出しと罫線は、表示しないことにしました。
また、ファイル選択キャラクタとして、'●'他、スピーカ・キャラクタを、FONT.Hに
追加しました。('●'の方は以前追加済)
それから、デバッグ機能として、選択したファイルの、ファイル番号(0〜7)を、液晶右下
に、'N5'のように表示するようにしました。
・今回、接続するインターフェースが、GLCD+SD+VS1011eと、多いので
ポート割付は、特に慎重に行った。
■ 2013.9.11
・一応ソース書き終える。
今回、漢字フォントは使わないので、その部分のインクルード及び、GLCDライブラリ中の、
漢字関連関数を、全てコメントアウトしてコンパイルを行った。
これは、プログラムメモリの使用量を、極力抑えるためです。
・コンパイル〜HEX焼きまでOKとなる。(ファイルリスト表示・選択までの動作確認版)
<動作確認>
・文字列表示関数の、表示位置指定の、X, Yを逆に考えていたため、最初リスト表示
にならなかったが、修正し、リスト表示するようになった。
・ファイル選択キャラクタ'●'の移動処理のところで、イージーミスがあったが
これも修正でうまく行く。
・他の、機能も問題なし
■ 2013.9.12
・ここから、新プロジェクト(VS1011e追加)にして、MP3デコーダ:VS1011e部の、コーディングを行った。
・追加ファイルとしては、VS1011.hと、ライブラリソース:vs1011.cが必要
■ 2013.9.13
・デバッグ開始
→ まず再生しない。
ENTER SW押すと、直ぐに、リスト画面に戻ってしまう。
→ 2点誤りあり
@ FileNoを渡すところ
アスキーに変換した後の、FileNoを渡していた。
→ アスキー変換する前の、テンポラリ変数を渡すように修正した。
A FileNameバッファを定義している、2次元配列の意味を勘違いしていた。
→ 現、FileName[20][9]ではダメ
これだと、1ファイル9文字構成を、20ファイル分確保ということになる。
FileName[20][13]に修正
つまり、1ファイル13文字構成(8文字+'.MP3'+NULL)を
20ファイル分確保ということ。
・この修正で、再生するようになったが、未だおかしい。
再生が終わると、曲リスト表示に戻るが、8曲を超えた分の表示になってしまう?
→ これは、リスト表示初期画面に戻る前に、ファイルポインタ:fptrを、0に初期化
するのを忘れていたためで、修正でOKになる。
<最終回路図>
・こちらから、どうぞ→ 「PIC32MX_リスト表示選択式MP3プレーヤ実験回路図」
※ 尚、VS1011e基板の回路図他ドキュメントは、実験テーマ1を参照してください。
<最終ソース>
・こちらから、どうぞ→ SD_File_List_Select_MP3_Player_TEST.c
glcd_lib32k.c (後閑氏が作成されたGLCDライブラリです。今回は漢字関数は未使用です)
glcd_lib32k.h (後閑氏が作成されたGLCDヘッダです)
font.h (後閑氏が作成されたASCIIフォントに、オリジナルキャラクタをいくつか追加したものです)
VS1011.c (後閑氏が作成されたVS1011ライブラリです)
VS1011.h (後閑氏が作成されたVS1011ヘッダです
※ 尚、この他に、ファイルシステム関係のファイルが必要になります。
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ40へ →