BLANKFIELD

MP3プレイヤー製作日記2

MP3プレイヤー製作日記1の続きです。

久しぶりにMP3プレイヤーの製作に着手しました。今回はmicroSDカードを実装しようと思います。

とりあえず、microSDカードをArduinoに接続します。

SatE-Oさんによる方法を全面的に採用し、microSD->SD変換コネクタをスロットとして使います。

ブレッドボードに挿せるように、ピンヘッダを変換コネクタに半田づけします。

つぎに、SDカードのArduinoとの接続をします。こちらもSatE-Oさんの回路どおりに行います。

それではSDカードのテストを行います。

いつも電子工作をするときにお世話になっているarms22さんのなんでも作っちゃう、かも。というサイトでとてもわかりやすくSDカードをArduinoで用いる方法を解説されています。簡単に記録、読み込みするだけならこちらのFatFsライブラリを用いるのが賢そうです。AF_Waveライブラリはちょっと分かりづらいので、このFatFsライブラリを元に必要な機能をAF_Waveライブラリから付け足してプログラムを作っていこうかと思います。

今回は、SDカードにあるファイルのリストを画面に出力するというプログラムを作ります。SatE-OさんのAF_Waveライブラリ用のプログラムを真似っこすることにしました。

プログラムの変更点は次の通りです。
ルートディレクトリ以外をサポートするためにfat_config.hの#define FAT_DIR_COUNT 1を10に。
ディレクトリ内のファイル名を得るためにget_next_name_in_dirをFatFsに追加。

Aディレクトリを開き、ディレクトリ内のファイルのリストを表示します。
Aディレクトリ自身を示す”.”と、上の階層を示す”..”もファイルとして表示されます。

#include <FatFs.h>
File file;
void setup()
{
    Serial.begin(9600);
    delay(1000);
    if(!FatFs.initialize()){
        Serial.println("can not initialize.");
        while(1);
    }
    
    //
    Serial.print("\x1B@0Z");
    Serial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
    Serial.println("日本語テスト");
    Serial.print("\x1B@1Z"); // 文字コードをShift-JISに設定
        //Serial.print("\x1B@3Z"); // 文字コードをUTF-8 に設定
    char name[32];
    
    char* file = "A";
    
    if (FatFs.fileExists(file))
        Serial.println("File exists");
    else
        Serial.println("File doesn't exist");
    
    if (FatFs.changeDirectory(file))
        Serial.println("ChangeDirectory OK");
    else
        Serial.println("ChangeDirectory Failed");
        
    
    while( 1 ){
        if( !FatFs.get_next_name_in_dir(name) ){
            break;
        }
        Serial.print("    ");
        Serial.println(name);
    }
}
void loop()
{
}