Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
SDライブラリ使用上の注意

概要

マイクロコントローラとSDカードの通信にはSPIを利用する。これはデジタルピンの11番と12番、13番(ほとんどのArduinoボード)、もしくは50番と51番、52番(Arduino Mega)を利用して行われる。さらに、SDカードを選択するためにもう一本のピンを利用する必要がある。これはハードウェアSSピン(ほとんどのArduinoボードでは10番、Arduino Megaでは53番)を利用する。あるいはSD.begin()を呼ぶときに指定したピンを利用する。ハードウェアSSピンを使わない場合でも、ハードウェアSSピンを出力モードにしておかなければ、SDライブラリは動作しない。SDライブラリの利用にあたり、異なるボードでは異なるピンを利用する。SD.begin()に渡すパラメータで正しいピンを選択すること。

メインのSDライブラリページに全ての関数が示されているわけではない。一部はライブラリのユーティリティの関数である。

カードのフォーマット・準備

SDとSDHDフォーマットと同様に、SDカードと書いてあるときはSDとマイクロSDを意味する。

ほとんどのSDカードは何もせずに使うことができる。しかし、他のコンピュータやカメラで使っていたものの中にはSDライブラリで読めないものもある。カードをフォーマットして、Arduinoが読み書きできるファイルシステムを作ることができる。

SDカードを何度もフォーマットすることは、寿命を縮めることになるので、あまり好ましいことではない。

SDカードリーダとカードを正しくフォーマットするためのコンピュータが必要となる。このライブラリはFAT16とFAT32ファイルシステムをサポートしている。しかし、できればFAT16を利用すること。フォーマット方法はとても簡単である。

Windows:カードのディレクトリを右クリックしてドロップダウンリストから「フォーマット」を選択する。ファイルシステムとしてFATを選択すること。

OSX:ディスクユーティリティ(アプリケーション>ユーティリティ>ディスクユーティリティにある)を開く。カードを選択し、消去タブをクリックする。MS-DOSファイルシステムを選択する。OSXでドライブをフォーマットすると、いくつかの隠しファイルを作成する。余分なファイルを作成せずにSDカードをフォーマットするには、Ladyadaのサイトのこの注意(英語)に従うこと。

Linux:SDカードを挿入し、端末ウインドウを開く。プロンプトでdfとタイプする。SDカードのデバイス名が出力される。これは/dev/sdb1のような形式である。SDカードをアンマウントする。このとき、カードは挿入したままにする。sudo mkdosfs -F 16 /dev/sdb1とタイプする。デバイス名は最初に調べたものに置き換える。SDカードを取出し、動作するかを確認する。

ファイル名称のつけ方

FATファイルでのファイル名のつけ方には制約がある。8.3フォーマットを使う必要がある。このため、ファイル名は"NAME001.EXT"のようになる。NAME001は8文字以下の文字列で、EXTは3文字の拡張子である。".TXT"や".LOG"という拡張子がよく使われる。mydata.txtやtime.logのような短いファイル名を使うことができるが、長い名前は使うことができない。

ファイルのオープン・クローズ

file.write()を使っても、flush()やclose()を発行しない限りカードには書き込まれない。ファイルをオープンした後は、データをセーブするためにファイルのクローズを忘れないこと。

バージョン1.0からは複数のファイルをオープンできるようになった。

異なるシールド・ボード

SDカードをサポートするシールドがたくさんある。以下のリストに限定されるわけではないが、多く使われる。

Arduino Ethernet Shield

Ethernet Shieldはボード上にSDカードスロットがある。シールドはArduinoに重ね合わせることができる。イーサネットモジュールが10番ピンを使うので、SDカード用のCSピンは4番ピンに移されている。SD.begin(4)を利用すること。

Adafruit Micro-SD breakout Board

このボードはマイクロSDカードをサポートする。利用するには準備が必要である。GNDをgroundに、5Vを5Vに、CLKを13番ピンに、DOを12番ピンに、DIを11番ピンに、CSを10番ピンに接続する。すでに10番ピンを使っている場合は、他のピンを利用する。SD.begin()の引数を変えること。

Sparkfun SD Shield

SparkfunシールドはArduinoに重ねることができる。8番ピンをCSに使うこと。SD.begin(8)を利用することが必要である。

注意:Sparkfunシールドは最近更新された。古いバージョンは似ているが、3.3Vバスとの接続とボード上のヘキサインバータがない。

バージョン

Arduino 1.8.5



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system