■SD.begin関数
SD.begin関数は、SDライブラリとカードを初期化します。
これは、SPIバス(ほとんどのArduinoボード上のデジタルピン11,12,13、Megaでは50,51,52)とチップセレクト(CS)ピンの使用を開始します。
これはデフォルトでハードウェアSSピン(ほとんどのArduinoボード上のデジタルピン10、Megaでは53)。
別のチップセレクトピンを使用しても、ハードウェアSSピンを出力として保持する必要があり、これをしないとSDライブラリの機能が動作しません。
■使用例
Arduino IDEで使用するSD.begin関数の使い方は以下の通りです。
試しに図1の様にmicroSDカードとArduino UNOを接続し下記プログラムを実行すると、SD.begin関数でmicroカードが存在するか確認し初期化します。
次にArduinoProMini3.3VのA0~A2ピンに入力した電圧をanalogRead関数で読み取り、 SD.open関数で「datalog.txt」ファイルを開き、「dataFile」が利用可能な場合はそのファイルにdataFile.println関数でデータを書き込み、dataFile.close関数でファイルを閉じます。
※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 <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 (dataFile) { dataFile.println(dataString); dataFile.close(); // シリアルポートにも出力します Serial.println(dataString); } // ファイルが開いていない場合は、エラーをポップアップします。 else { Serial.println("error opening datalog.txt"); } }
■構文
SD.begin()
SD.begin(cspin)
■パラメータ
cspin(オプション):SDカードのチップセレクトラインに接続されたピン。
デフォルトはSPIバスのハードウェアSSラインです。
■戻り値
成功したら「true」、失敗したら「false」。