ホームページを統合しました 詳しくはここをクリック

SDカード読込エラーについて

SDカード読込エラーについて

ArduinoでSDカードライブラリを使ったファイル読み込み時に、全然読み込めなく四苦八苦したのでここに解決方法を書いておきます。

ArduinoでSDメモリカードを読み書きする
http://arms22.blog91.fc2.com/blog-entry-502.html

主にこのサイトを参考にしました。
 

エラー原因になるスケッチ例

void loop()
{
  String a = sd_read("ceilinglight/500.txt");

  if (error == 1) {
    //エラーが発生した場合
    Serial.println(F("Error:SD not open"));
  }
  else {
    //正しく読みこめた場合
    Serial.println(F("SD Read Data:"));
    Serial.println(a);
  }

  error = 0;
  //プログラムをここで終了(停止)
  while (1);
}

これはエラーになったコードの一部です。
(このコードはArduinoIDEにそのままコピペでは使用できません)

スケッチは書き込めるものの、シリアルモニタを見てみると
「Error:SD not open」
と、スケッチで指定しておいたエラー文字が返ってきます。

(ファイルは存在しますが…)

解決方法

void loop()
{
  String a = sd_read("clight/500.txt");

  if (error == 1) {
    //エラーが発生した場合
    Serial.println(F("Error:SD not open"));
  }
  else {
    //正しく読みこめた場合
    Serial.println(F("SD Read Data:"));
    Serial.println(a);
  }

  error = 0;
  //プログラムをここで終了(停止)
  while (1);
}

これはエラーが解決されて正しくファイルを読み込めるコードです。
変えたのはほんの一部ですので、見比べても気づかないかもしれません。

実際に変えたのは、
読み込むファイル名「String a = sd_read(“ceilinglight/500.txt”);」が「String a = sd_read(“clight/500.txt”);
の部分です。

ETFS Research

エラー原因は、ファイルパスにあったんです!!

参考にしたサイトにもこのような注意は書かれていました↓
「ファイル名は8文字+3文字までです。例えば「filename.txt」はOKですが、「filename_2013.text」はNGです。」
http://arms22.blog91.fc2.com/blog-entry-502.htmlより引用)

ファイル名は8文字、拡張子は3文字までしか対応していないそうです。
今回「ceilinglight」というフォルダーを指定していたのが原因でした。
フォルダー名が何文字まで対応しているかは検証していませんが、フォルダー名にも規制があることは確かです。

以上、ArduinoのSDカード読み込み時のエラーについてでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)