ウキウキで購入したM5Peparをちゃんと使ってあげたいので、すでにほぼ完成している、ゲームのやることリスト表示サイトのM5Paper版を作りたい・・・。
PHPを使って.jsonファイルを読み書きする作りなので、サーバからファイルをダウンロードすればできる!と思ったけれど、結構複雑そうなので今回はSDカードに事前に保存したものを読み込めるか確認した。
ちなみにjsonの中身はこんな感じ。キャラの名前とかオーダーが終わってるかとかが書いてある。
{
"name":"ヴ",
"shukais":[
{"id":"緊急","status":false},
{"id":"アルチ","status":false},
{"id":"ロドス","status":false}
],
...
...
}
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()
{
}
JavaScriptとかに慣れるとC++がねちっこく書かないと分かってくれない大変さがある…
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント