🗂️
SDカードの読み書き方法 (便利モジュール編)
前回の失敗を振り返る
前回は何もかもが不安定だった。まず SD.begin()
が通るかどうかが運まかせで、それが通ったとしても書き込むとファイルシステムがぶっこわれるというめちゃくちゃな状況だった。
その原因はSDカードを単純なソケットを仲介してArduinoに直接接続する形になっていたためと思われる。ここで慣れた人なら何かを何かするのだろうが素人にはお手上げなのだった。
そこで今回はSDカードとArduinoの間でいろいろやってくれる便利モジュールを使ってみることにした。
部品
配線
モジュール側 | Arduino 側 | GPIO |
---|---|---|
CS | SS | 10 |
SCK | SCK | 13 |
MOSI | MOSI | 11 |
MISO | MISO | 12 |
VCC | 5V | |
GND | GND |
使用するピンの場所は決まっている。
動作確認
#include <DebugLog.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
boolean value = SD.begin();
ASSERT(value);
// 書き込み
if (true) {
SD.remove("tmpfile1.txt"); // FILE_WRITE が「追記」のため削除しておく
File file1 = SD.open("tmpfile1.txt", FILE_WRITE);
ASSERT(file1);
file1.println("123");
file1.println("456");
file1.close();
}
// 読み込み
if (true) {
File file1 = SD.open("tmpfile1.txt");
ASSERT(file1);
while (file1.available()) {
String line = file1.readStringUntil('\n');
PRINTLN(line.length());
PRINTLN(line);
}
file1.close();
}
}
void loop() {
}
を実行したところ問題なく動作した。
Discussion