NOBのArduino日記!

NOBのArduino日記!

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

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

■file.println関数
 SD:FileClassのfile.println関数は、書き込みのために開いたファイルにデータとキャリッジリターンと改行を続けて送信します。
 数値を桁毎に分離したASCII文字の数字として送信します。
 たとえば、123は3文字 '1'、 '2'、 '3'として送信されます。

■使用例
 Arduino IDEで使用するfile.println関数の使い方は以下の通りです。
 試しに図1の様にmicroSDカードとArduino UNOを接続し下記プログラムを実行すると、SD.begin関数でmicroカードが存在するか確認し初期化します。
 シリアルモニタにSDカード内のファイル一覧が表示されます。
 またSdFileWrite関数中のfile.print関数によって「p_str」変数に格納されているデータを送信します。

イメージ 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>
const int sd_chip_select = 4;//SDCard D4 pin
int test_count = 0;
String test_str = "";

void setup() {
   Serial.begin(9600);
   pinMode(SS, OUTPUT);
   Serial.print(F("SDCard:"));
   if (!SD.begin(sd_chip_select)) {
       Serial.println(F(" error..."));
   } else {
       Serial.println(F(" OK"));
       Serial.println(F("----------------------------"));
       SdFileList();
       Serial.println(F("----------------------------"));
   }
}

void loop() {
   test_count = SdFileRead("COUNT.TXT").toInt();//カウンタを読み込み
   test_count++;
   SdFileWrite("COUNT.TXT", String(test_count));
   test_str = SdFileRead("STR.TXT");
   test_str += "SD";
   SdFileWrite("STR.TXT", test_str);
   Serial.println(F("----------------------------"));
   delay(3000);
}

void SdFileList() {   //SDファイル一覧
   File dir = SD.open("/");
   while (1) {
       File entry =   dir.openNextFile();
       if (!entry) {
           break;
       }
       if (!entry.isDirectory()) {
           Serial.print('\t'); Serial.print(entry.name());
           Serial.print("\t"); Serial.println(entry.size(), DEC);
       }
       entry.close();
   }
}

String SdFileRead(String p_file_name) {   //SDファイル読み込み
   String str;
   File file = SD.open(p_file_name);
   Serial.print(F("SD FileRead: ")); Serial.print(p_file_name);
   if (file) {
       while (file.available()) {
           str += char(file.read());
       }
       Serial.print(F(" > ")); Serial.println(str);
   } else {
       Serial.println(F(" error..."));
   }
   file.close();
   return str;
}

void SdFileWrite(String p_file_name, String p_str) {   //SDファイル書き込み
   File file = SD.open(p_file_name , FILE_WRITE | O_TRUNC);
   Serial.print(F("SD FileWrite: ")); Serial.print(p_file_name);
   if (file) {
       file.print(p_str); Serial.print(F(" << ")); Serial.println(p_str);
   } else {
       Serial.println(F(" error..."));
   }
   file.close();
}
イメージ 1
図1:プログラム例

■構文
 file.println()
 file.println(data)
 file.println(data,BASE)

■パラメータ
 file:Fileクラスのインスタンス(SD.open関数によって返されます) 
 data:印刷するデータ(char、byte、int、long、またはstring)
 BASE(オプション):数値を印字するベース(表2参照)

表2:オプション(略称)とベース(底)
オプション ベース
BIN binary 2進数
OCT octal 8進数
DEC decimal 10進数
HEX hexadecimal 16進数

■戻り値
 バイト数、println関数は書き込まれたバイト数を返しますが、その数値を読み取ることはオプションです。

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

↩【ArduinoIDE reference】目次に戻る