● 実験テーマ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へ →