ATtiny85で128×64グラフィック描画を試す

以前にATtint85にOLEDを繋ぐという投稿をした。

Arduinoプログラミング手法-(6)ATtiny85にOLEDを繋ぐ

OLED(128×64)のフレームバッファとして1024バイト必要であるのに対しATtiny85には512バイト(実質的には300バイト程度が上限)しかRAMがないのでピクセル合成が出来ない。

こういう場合、さっさと諦めてしまうのは普通の人、私は普通じゃない人(いい意味でですよ(笑))なのでなんとかできないものかと考えてしまう。

で、思いついたのが、ATtint85でも描画できる程度に描画領域を分割し、その描画領域を切り替えながら描画が完了するまで繰り替えすというロジックを考えてみた。て、いうか、それ普通に考えるだろう?って、突っ込みはなしで。(笑)

まずは、ATtiny85(digispark)にOLEDを接続し、

前回のSSD1306.hを改造し、次のコード(汚くてすいません)を試験的に追加し、

下記サイトを参考に、ワイヤーフレームのボックスを回してみると、

ATtiny85 Graphics Display

※今回の肝の部分。描画が完了するまで繰り返すロジック。

結果は、こんな感じで、33-34FPSくらいは出た。

この例ではメモリ量と速度のバランスが一番良いと思われた128分割で実行した結果で、フレームバッファは、1024/128=8バイトでしかないが、まぁ、そこそこのパフォーマンスは出てるといえる。

しか-し、別の問題が。以前の投稿でも書いたようにコードサイズの問題であるが、試験プログラムで既に5K程度になっており残りは1K程度しか残っていないのだ。これではライブラリだけでお腹一杯。アプリが入らなさそう...

大きなアプリから利用したい場合、ATTiny85をグラフィック・サーバーとして利用する手はあるし、簡単なアプリであれば単体でも使えるかもしれない...が、無理してATtiny85でなくてもいいんじゃね?と、何故か虚しさを感じるのは私だけだろうか...

せめてATtiny85の16K版があったらいいのに...
microchip様、以前悪口言ったのは謝ります。
だから私の願いを聞いてくださーい。<(_ _)>