■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:SparkFun microSD Transflash BreakoutとArduinoProMini3.3Vの接続例
※ArduinoUNO等の5V出力マイコンと接続する場合は、
レベルシフタか抵抗の分圧で電圧を3.3Vに下げます。
※ArduinoUNO等の5V出力マイコンと接続する場合は、
レベルシフタか抵抗の分圧で電圧を3.3Vに下げます。
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 |
#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:プログラム例
■構文
file.println()
file.println(data)
file.println(data,BASE)
■パラメータ
file:Fileクラスのインスタンス(SD.open関数によって返されます)
data:印刷するデータ(char、byte、int、long、またはstring)
BASE(オプション):数値を印字するベース(表2参照)
オプション | 英 | ベース |
BIN | binary | 2進数 |
OCT | octal | 8進数 |
DEC | decimal | 10進数 |
HEX | hexadecimal | 16進数 |
■戻り値
バイト数、println関数は書き込まれたバイト数を返しますが、その数値を読み取ることはオプションです。
励みになりますのでよければクリック下さい(^o^)/