NOBのArduino日記!

NOBのArduino日記!

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

Arduino IDE(SD.exists関数の使い方)

■SD.exists関数
 SD.exists関数は、ファイルまたはディレクトリがSDカードに存在するかどうかを確認します。

■使用例
 Arduino IDEで使用するSD.exists関数の使い方は以下の通りです。
  試しに図1の様にmicroSDカードとArduino UNOを接続し下記プログラムを実行すると、SD.begin関数でmicroカードが存在するか確認し初期化します。
 次にArduinoProMini3.3VのA0~A2ピンに入力した電圧をanalogRead関数で読み取り、 SD.open関数で「datalog.txt」ファイルを開きます。
 SD.exists関数で「datalog.txt」が利用可能か確認し、可能な場合はそのファイルにdataFile.println関数でデータを書き込み、dataFile.close関数でファイルを閉じます。

イメージ 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 <SPI.h>
#include <SD.h>

//イーサネットシールドでは、CSはピン4です。CSピンとして使用されていなくても、ハードウェアCSピン(ほとんどのArduinoボードでは10、メガでは53)を出力のままにする必要があります。
const int chipSelect = 8;

void setup() {
   // シリアル通信を開き、ポートが開くのを待ちます
   Serial.begin(9600);
   while (!Serial) {
       ; // シリアルポートが接続するのを待ちます。レオナルドのみに必要
   }

   Serial.print("Initializing SD card...");
   // デフォルトのチップセレクトピンが使用されていない場合でも、それが出力に設定されていることを確認してください。
   pinMode(10, OUTPUT);

   // 使用するchipSelectピンも出力に設定する必要があります。
   pinMode(chipSelect, OUTPUT);

   // カードが存在し、初期化できるかどうか確認してください。
   if (!SD.begin(chipSelect)) {
       Serial.println("Card failed, or not present");
       // 何もしないでください
       return;
   }
   Serial.println("card initialized.");
}

void loop() {
   // ログにデータを組み立てるための文字列を作成します。
   String dataString = "";

   // 3つのセンサーを読み取り、文字列に追加します。
   for (int analogPin = 0; analogPin < 3; analogPin++) {
       int sensor = analogRead(analogPin);
       dataString += String(sensor);
       if (analogPin < 2) {
           dataString += ",";
       }
   }

   // ファイルを開きます。一度に開くことができるファイルは1つだけなので、別のファイルを開く前にこのファイルを閉じる必要があります。
   File dataFile = SD.open("datalog.txt", FILE_WRITE);

   // ファイルが利用可能な場合は、そのファイルに書き込みます。
   if (SD.exists("datalog.txt")) {
       dataFile.println(dataString);
       dataFile.close();
       // シリアルポートにも出力します
       Serial.println(dataString);
   }

   // ファイルが開いていない場合は、エラーをポップアップします。
   else {
       Serial.println("error opening datalog.txt");
   }
}
イメージ 1
図1:プログラム例

■構文
 SD.exists(filename)

■パラメータ
 filename:存在するかどうかをテストするファイルの名前。
      パスを指定出来ます(スラッシュ”/”で区切り)

■戻り値
 ファイルまたはディレクトリが存在する場合はtrue、そうでない場合はfalse

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

↩【ArduinoIDE reference】目次に戻る