#M5StickCPlus のSPIFFS領域(内部フラッシュ)を扱うシンプルなサンプルコード #Arduino

M5StickCPlusには標準でSDカードなし

センシングしたデータなどを電源が切れても保存しておくためのデータ保存について。M5StackにはSDカードが使えるようですが、M5StickCPlusには残念ながら標準では付いていません。

調べるとSPIFFSというフラッシュメモリの一部を使える事が分かりました。上記のサイトなどを参考にさせて頂きつつ、分かりにくかったところにコメントやSerial.print入れまくって自分なりに整理したものを置いておきます。

サンプルコード SPIFFS_Sample.ino

#include <M5StickCPlus.h>
#include "FS.h"
#include "SPIFFS.h"

const char *FILE_PATH = "/log.txt"; //テキスト保存するファイル名
const char *INIT_STR = ""; //初期化するテキスト;

void readFile() {

  File file = SPIFFS.open(FILE_PATH, "r");
  if (!file || file.isDirectory()) {
    Serial.printf("Failed to open file for reading: %s\r\n", FILE_PATH);
    return;
  } else {
    Serial.printf("Success to open file for reading: %s\r\n", FILE_PATH);
  }

  Serial.println("/////////////////////READ START/////////////////////");

  while (file.available()) {
    Serial.write(file.read());
  }

  Serial.println("/////////////////////READ END/////////////////////");

  file.close();
}

void removeFile() {

  //ファイルが存在すればリムーブできる
  if (SPIFFS.remove(FILE_PATH)) {

    //Serial.println("Remove success.");
    Serial.printf("Remove success: %s\r\n", FILE_PATH);
  } else {

    Serial.printf("Remove failed. Not available.: %s\r\n", FILE_PATH);
  };
}

void writeFile(const char *str) {
  File file = SPIFFS.open(FILE_PATH, FILE_APPEND);

  if (!file) {
    Serial.printf("Failed to open file for appending.: %s\r\n", FILE_PATH);
    return;
  } else {

    Serial.printf("Success to open file for appending.: %s\r\n", FILE_PATH);    

    if (file.print(str)) {

      Serial.printf("File writen: %s\r\n", str);

    } else {

      Serial.printf("File write failed: %s\r\n", str);
    }
  }

  Serial.print("File size:");
  Serial.println(file.size());

  file.close();
}


void resetFile() {

  removeFile();
  writeFile(INIT_STR);
}


void setup() {

  M5.begin();

  if (!SPIFFS.begin(true)) {
    Serial.println("SPIFFS Mount Failed");
    return;
  } else {
    Serial.println("SPIFFS Mount Success");
  }

  resetFile();
  writeFile("Test\r\n");
  writeFile("Test2\r\n");
  writeFile("139.85289,135.7654\r\n");
  readFile();
  readFile();
}

void loop() {
 
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です