NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(file.isDirectory関数の使い方)

■file.isDirectory関数
 SD:FileClassのfile.isDirectory関数は、現在のファイルがディレクトリかどうかを返します。
 ディレクトリ(またはフォルダ)は特別な種類のファイルです。

■使用例
 Arduino IDEで使用するfile.isDirectory関数の使い方は以下の通りです。
 試しに図1の様にmicroSDカードとArduino UNOを接続し下記プログラムを実行すると、SD.begin関数でmicroカードが存在するか確認し初期化します。
 printDirectory関数中のentry.isDirectory関数がtrueなら「/」を、falseならentry.size関数によって取得された「ファイルサイズ」を出力します。

イメージ 1
図1:SparkFun microSD Transflash BreakoutArduinoProMini3.3Vの接続例
ArduinoUNO等の5V出力マイコンと接続する場合は、
レベルシフタか抵抗の分圧で電圧を3.3Vに下げます。
表1:ArduinoUNOへのSDカード接続方法
microSDカード Breakoutボード ArduinoProMini3.3V
DAT0 D0 MISO
VSS GND GND
CLK SCK SCK
VDD Vcc 3.3V
CMD DI MOSI
CD/DAT3 CS CS/S

Breakoutボードに関する詳細はコチラ

#include <SD.h>
File root;

void setup() {
   Serial.begin(9600);
   pinMode(10, OUTPUT);
   SD.begin(10);
   root = SD.open("/");
   printDirectory(root, 0);
   Serial.println("done!");
}

void loop() {} //セットアップが完了しても何も起こりません。

void printDirectory(File dir, int numTabs) {
   while (true) {
       File entry =   dir.openNextFile();
       if (! entry) {
           // ファイルはもうありません。
           //Serial.println("**nomorefiles**");
           break;
       }
       for (uint8_t i = 0; i < numTabs; i++) {
           Serial.print('\t');
       }
       Serial.print(entry.name());
       if (entry.isDirectory()) {
           Serial.println("/");
           printDirectory(entry, numTabs + 1);
       } else {
           // ファイルにはサイズがあり、ディレクトリにはありません。
           Serial.print("\t\t");
           Serial.println(entry.size(), DEC);
       }
   }
}
イメージ 1
図1:プログラム例

■構文
 file.isDirectory()

■パラメータ
 file:Fileクラスのインスタンス(SD.open関数によって返されます) 

■戻り値
 ブール値

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る