Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

M5stackのSDカードに書き込む

実際のところ

#include <M5Stack.h>
#include <SD.h>

File myFile;
double imuData[3]; // pitch, roll, yaw

void setup() {
    M5.begin();
    M5.IMU.Init();
    SD.begin(TFCARD_CS_PIN);

    // SDカードに書き込むファイルを開く
    myFile = SD.open("/temp.txt", FILE_WRITE);
    if (myFile) {
        // IMUからデータをサンプリングしてSDカードに書き込む
        sampling();
        myFile.close();
        // バイナリ形式で読み出して変数に格納する
        output2();
        Serial.println("Finished");
    } else {
        Serial.println("Error opening temp.txt");
    }
}

void sampling() {
    for (int i = 0; i < 10; i++) {
        M5.IMU.getAhrsData(&imuData[0], &imuData[1], &imuData[2]);
        // バイナリ形式で書き込む
        myFile.write((uint8_t*)imuData, sizeof(imuData));
        delay(100);
    }
}

void output2() {
    // SDカードからバイナリ形式で読み出す
    myFile = SD.open("/temp.txt");
    if (myFile) {
        while (myFile.available()) {
            myFile.read((uint8_t*)imuData, sizeof(imuData));
            // 読み出したデータを表示
            Serial.printf("pitch %5.2f roll %5.2f yaw %5.2f\n", imuData[0], imuData[1], imuData[2]);
        }
        myFile.close();
    } else {
        Serial.println("Error opening temp.txt");
    }
}

参考もと

m5-docs