↑RP2040 TYPE-C 16MBを使い、混在する異なるサイズの画像を2インチTFTに連続表示(動画はGIF)
16MB使うにはCircuitpython
■Micropythonはフラッシュメモリーがいくらあっても2MBと見做す
Raspberry Pi Zeroに替えて、Picoを使ってパラパラアニメを作ろうと思ったら、画像はRAWファイルでも12~3枚が限度。無印のPicoのフラッシュメモリーが2MBしかないからです。
16MBあると思われるPico互換機のRP2040 TYPE-C 16MBが、以前Aliexpressで購入したまま眠っていましたので、これなら使えそうと考えました。
↑フラシュメモリーを16MBもつPico互換のRP2040 TYPE-C 16MB 眼がよく見えなくてハンダがひどいことになってます
早速MicropythonをインストールしてRAW画像を入れようとしたところ、12~3枚くらいで入らなくなってしまいました。これじゃPicoと同じ2MBじゃないか、騙されたのではと思ったものですが、どうやら無印Pico用のMicropythonはなべてフラッシュメモリーは2MBと見做すようになっているみたいです。
■専用のMicropythonをビルドする手もあるが
CircuitPythonを試すか、使えるMicropythonが探しても見つからないので自分でビルドしてつくる他なさそうです。専用のものを作っても管理が大変だし、ビルドは面倒でしょうから、CircuitPythonが使えたら手っ取り早く、無難でしょう。
Circuitpythonはあまりプログラミングしてこなかったし久しぶりでどこからダウンロードしてくればいいのかも忘れていたくらいなので、コード作成は生成AIに任せました。
↑RP2040 TYPE-C 16MBでフラシュメモリー16MB を使うにはCircuitepython が手っ取り早い
結果は、Circuitpythonならインストールするだけで16MBを認識しすぐ使えることがわかり、またパラパラアニメも予定の28枚の画像を使って実現できました。
■GMT020-02専用のst7789ドライバーは無敵
なお、ディスプレイにはクセのある2インチTFT(GMT020-02)を使用しましたので、生成AIがコード作成にもたつきましたが、CircuitpythonとMicropythonでは違いがあるものの、以前紹介した自作専用のst7789ドライバーを示したところ、ハードの特性をつかみ、速やかにコード作成がすすみました。GMT020-02専用のst7789ドライバーはここでも貢献、無敵です。
■混在するサイズの異なる画像を連続表示
愚痴ですが、ChatGPTには振り回されました。CircuitpythonはBMP画像しか扱えない、RAWも使えなくもないがBMPにしろというので用意したのに、途中からBMPはダメだRAW画像にせよと。しかも、以前作成してあったRAW画像がなぜか表示できないので、ChatGPTが用意した変換コードでRAW形式に作り替えたところ、なぜか縦長画像を生成していて、コードをどんなにいじろうともなおらない原因になっていたのです。以前作成してあったRAW画像もいつのまにか表示できるようになっていたり、他にも、Circuitpythonでは画像の回転や反転は不可能と言っていたのに、いつのまにか可能なことがまるわかりのコードを出してきたりと、相手がAIでも不信がわくというもの。
結局、コードはCopilotに書かせました。
シンプルなコードではつまらないので、RAW画像は240x240と240x320の両サイズ混在で連続表示を可能にするものとしました。そのため、大きなサイズの画像を表示した後に小さな画像を表示すると、小さくてカバーできず大きな画像の残像がはみだして覗き見苦しくなります。これを覆い隠すため、大きい画像と小さい画像との間に背景画像を挟んで表示させることにしますが、画像が変わるたびにいちいちすべて背景画像を描いていてはちらつきの元。したがって、小さい画像の表示の前に小さな画像を表示していた場合は間に背景画像は描かない、もちろん大きな画像を表示する場合にはその前の背景画像の描画は不要なので省くようにコードを記述しました。冒頭のGIFを参照ください。背景画像に歩き回るキャラクターの背景色(暗灰色)を使用したので、うまい具合にはみ出し部分の見分けはつかなくなっています。
|
このコードは、CopilotならびにChatGPTの助けを得て作成しました。


