M5StackでSDカード読み込み

f:id:PocketGriffon:20210916161942j:plain

M5Stack Core2にBOTTOM2を取り付けてみた!

おお〜!厚底になって安定感が増した!(たぶん変わってない)

重量もアップして持ちごたえが良くなった気がする(^-^)

…で、これで何が出来るのか、あんまり理解していないのですが…汗

 

さて本題。

いろいろとホントに申し訳ない……orz

ブログ書いててこれほどまで訂正と懺悔が多いのは初めてだ(T-T)

 

お昼休みに本屋さんでぺらぺらとESP32関連の本をめくっていた。狙ったわけでは無かったのだが、SDカード関連の記事が載っていて、読む…という感じではなく、目に入った程度だったのだが……その時の目に入ったモノがとても気になって…。

 

違和感に基づいて、もう一度SDカードの読み込み実験をしてみた。

これが↓前回載せていた写真。

f:id:PocketGriffon:20210914181208j:plain

そして↓こっちが↓今回の実験写真。

f:id:PocketGriffon:20210916162440j:plain

なんだ、特に変わってないじゃん……

!!変わってるじゃん!!!

桁が1つ違う!!

約21秒以上掛かっていた読み込み時間が3秒以下になり、1秒間に約102KBだった読み込みが、なんと1024KBに増えている!!!

 

え?!これが本来の速度????

…M5Stackよ、すまぬ…意図的では無いにしてもキミの評価を下げてしまってたかも(TT)

 

なんのことはない、これまた私が勘違いというか無知をご披露してました。

SDからの読み込みには1バイト読み込みしかないんだと思い込んでた!!

 

 FIle f = SD.open(filename);

 for(int i = 0; i < f.size(); f++)

  data[i] = f.read();

 

↑みたいな感じでデータの読み込みをしていたんですが、一気に読む方法があった!

 

 FIle f = SD.open(filename);

 int size = f.read(data, f.size());

 

まぁ…そりゃあるよね(T-T)

スクリーンショットを作ってる最中に、SDへの書き込みがブロック単位で出来る事に気がついた。あれ?書く方は一気に出来るのに、読む方は出来ないんだ…と思った覚えはあるけれど、それ以上は特に追求しなかった。

 

今見てみたらスケッチブック例にある「SD(esp32)」→「SD_Test」で同じ方法で読み込んでいた。ちゃんとサンプルを見ないとダメですな…orz

 

Bad Apple!!の再々改造!

こうなると……先日改良したつもりのBad Apple!!を、さらに修正したくなるよね!

 

まず冒頭部分でデータを一気に4MB近く読み込んでいた部分を修正してみると、それまで40秒位かかっていた読み込みが4秒前後まで短縮!速い!!(^o^)

 

アニメーション部分も改良してみると……あっという間にバッファがいっぱいになる!(^^;

アニメーションデータの消費速度の方が圧倒的に遅い。

そりゃそうだ、前回のブログで「平均23.5KB/秒のデータが必要」と計算してたのに、今は1024KB/秒の読み込み速度だ!実装値で1/10だとしても100KB/秒。余裕がありすぎる(^^;;;

 

仕方ないので読み込みの速度を落としていく。冒頭部分で読み込んでいるデータ量を減らしても良かったのだが、それよりもアニメーション実行中のスムースさを心がけたかったので、読み込み処理の単位を小さくして、確実に1/30秒表示を心がけた。

 

細かい調整をして、アニメーション開始時と終了時のバランスを良くした。基本は少しずつ読み込みが速いけれど、後半の複雑なデータでは読み込みが遅れていく。結果的に良い感じに調整ができた!

 

うむむ……先日、あれだけ鬼気迫る思いで改良をしていたBad Apple!!が、ものすごくすんなり動くようになってしまった…(T-T)

 

Bad Apple!! グレイスケール版

前回のこのブログでもちょろっと書いた、白黒2値の絵ではなく、グレイスケールで表示するBad Apple!!というのを実験している。

 

たけど、圧縮データの展開に時間がかかる、高速なメモリが使えない、何よりもSDからの読み込み速度が壊滅的に無理……という状況だったのだが、ここに来てSDカード状況が一変した。

 

そして別の2つ(展開速度問題、高速メモリ)も脳内でアイディアが浮かんだ!

一度は諦めたんだけど、これはもう一度チャレンジしてみないといけないですなぁ!!(^^)

 

 

ところで…

f:id:PocketGriffon:20210916170858j:plain

こちらも手に入れてしまった!(^-^;;;

 

Core2では動かない、または改造が必要…みたいなものが多そうだったので、前々からFIREも手に入れておきたいな…と思っていた。

 

M5Stickの方は正直良くわかっていないんだけど、こちらも何か動かせないかと考えてる。でも今見たらSDカードを入れるところがないので、大きなデータを使うタイプのモノはダメなんでしょうね…。そもそもの使い方が間違ってるって事なんだろうけれども(^^;;

 

ではまた次回!(^-^)ノ