2021-02-28に投稿

M5PaperのSDカード内のjsonファイルを読み込む

やりたいこと

ウキウキで購入したM5Peparをちゃんと使ってあげたいので、すでにほぼ完成している、ゲームのやることリスト表示サイトのM5Paper版を作りたい・・・。
PHPを使って.jsonファイルを読み書きする作りなので、サーバからファイルをダウンロードすればできる!と思ったけれど、結構複雑そうなので今回はSDカードに事前に保存したものを読み込めるか確認した。
ちなみにjsonの中身はこんな感じ。キャラの名前とかオーダーが終わってるかとかが書いてある。

{
    "name":"ヴ",
    "shukais":[
        {"id":"緊急","status":false},
        {"id":"アルチ","status":false},
        {"id":"ロドス","status":false}
        ],
    ...
    ...
}

image

手順

1.SDカードの中の.jsonファイルを開く
2.読み込んだテキストをjsonオブジェクトに変換する
3.(今回は)コンソールに出力する

jsonを扱うのに便利そうなライブラリを見つけたのでありがたく使用する。
https://arduinojson.org/

#include <M5EPD.h>
#include <SD.h>
#include <ArduinoJson.h>

String buf;

void setup()
{   
    //シリアルモニタを使えるようにする
    Serial.begin(115200);
    while (!Serial) continue;

    //SDカード他を遣えるように一括で設定する
    M5.begin();

    //ファイルの中身を 一 文 字 ず つ 読み取る
    File file;
    file = SD.open("/01vu.json",FILE_READ);
    while(file.available()){
      buf.concat(file.readString());
    }

    //jsonオブジェクトに変換
    StaticJsonDocument<2000> json;
    deserializeJson(json,buf);

    //名前を取得する
    const char* name = json["name"];
    String namae ="名前:";
    namae.concat(name);
    Serial.println(namae);

    //周回:なんとか の進み具合を取得する
    //今度は複数あるので配列を使う
    JsonArray shukais = json["shukais"];
    for(JsonVariant v : shukais){
      const char* id = v["id"];

      //数字だとわかりづらいので文字列に直してみる
      const char* bl = v["status"]?"おわった":"おわってない";
      String Shukai;
      Shukai.concat(id);
      Shukai.concat(":");
      Shukai.concat(bl);
      Serial.println(Shukai);
    }
}


void loop()
{

}

結果

image
表示できた

  1. .jsonファイルの上書き
  2. コンソールじゃなくて液晶に表示する
  3. 液晶にスイッチも表示させてスイッチを押したら上書き

---

JavaScriptとかに慣れるとC++がねちっこく書かないと分かってくれない大変さがある…

ツイッターでシェア
みんなに共有、忘れないようにメモ

vuchvu

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント