M5Stack Core2にBOTTOM2を取り付けてみた!
おお〜!厚底になって安定感が増した!(たぶん変わってない)
重量もアップして持ちごたえが良くなった気がする(^-^)
…で、これで何が出来るのか、あんまり理解していないのですが…汗
さて本題。
いろいろとホントに申し訳ない……orz
ブログ書いててこれほどまで訂正と懺悔が多いのは初めてだ(T-T)
お昼休みに本屋さんでぺらぺらとESP32関連の本をめくっていた。狙ったわけでは無かったのだが、SDカード関連の記事が載っていて、読む…という感じではなく、目に入った程度だったのだが……その時の目に入ったモノがとても気になって…。
違和感に基づいて、もう一度SDカードの読み込み実験をしてみた。
これが↓前回載せていた写真。
そして↓こっちが↓今回の実験写真。
なんだ、特に変わってないじゃん……
!!変わってるじゃん!!!
桁が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つ(展開速度問題、高速メモリ)も脳内でアイディアが浮かんだ!
一度は諦めたんだけど、これはもう一度チャレンジしてみないといけないですなぁ!!(^^)
ところで…
こちらも手に入れてしまった!(^-^;;;
Core2では動かない、または改造が必要…みたいなものが多そうだったので、前々からFIREも手に入れておきたいな…と思っていた。
M5Stickの方は正直良くわかっていないんだけど、こちらも何か動かせないかと考えてる。でも今見たらSDカードを入れるところがないので、大きなデータを使うタイプのモノはダメなんでしょうね…。そもそもの使い方が間違ってるって事なんだろうけれども(^^;;
ではまた次回!(^-^)ノ