e-DIYで行こう!趣味の電子工作とプログラミングの記録e-DIYで行こう!MicroPythonでST7789液晶ディスプレイを動かすMicroPython2021.01.24以前、フルカラー液晶ディスプレイ2種類のArduinoでの動かし方を記事にした。ArduinoでST77xxフルカラー液晶を動かすフルカラーの液晶ディスプレイが今どきはAliexpressで送料込み2,3百円で買える。ST7...blog.goediy.com2020.07.23MicroPythonでもこれらを動かせないかとドライバを探したところ、ST7789用が辛うじて見つけられた(ST7735用はちゃんと動く物を見つけられず)。一応ドライバは見つかったものの実用性はイマイチで、なんとか動作するレベル。いうわけで、今回はST7789液晶ディスプレイのMicroPythonでの動かし方を一応記事にまとめておく。スポンサーリンク目次ドライバの準備ハードウエアの配線とドライバの初期化コードカラーで図形を描画する色々なフォントでテキスト出力させるサンプルプログラムの中を覗いてみるCircuitPythonならドライバが充実している模様まとめドライバの準備ST7789のMicroPythonライブラリにはドライバ本体がCで書かれた高速版があるのだが、MicroPython自体のカスタムビルドが必要なため今回は利用を断念。同じ作者が”Slow”と律儀に断ってフルMicroPython版のドライバを公開しており、今回はそれを使うことに。dri...github.comGitHubからライブラリを取得し、ampyで転送する。ドライバ本体はst7789py.pyだが中身は高速版のst7789.pyとAPI互換であり、サンプルプログラム等がst7789.pyを参照する関係でst7789py.pyをst7789.pyにリネームして転送しておく。st7789.pyハードウエアの配線とドライバの初期化コード以下の表のようにST7789とESP32を接続する。未接続そして、MicroPython上で以下のコード実行によりドライバの初期化がされる。Pin.OUT))display.init()カラーで図形を描画する上記の初期化コードを実行後、displayオブジェクトのメソッドを呼び出すことで基本的な描画が出来る。st7789.RED)色々なフォントでテキスト出力させる上記ドライバは最低限のグラフィック描画機能しか持っていないので、テキスト出力を行うためには別途ライブラリが必要。そこで見つけたのは以下のライブラリ。cloneでローカルに持ってきて、フォント(ディレクトリpyfonts/以下)とライブラリ本体(pytext.py)をampyで転送する。pyhello.py実行すると、下の写真のように”Hello!”が色々なフォントで表示される。フォントのバリエーションが沢山あって見ていて楽しいが、描画速度は作者が”Slow”と言っている通りでかなり遅い。以前記事にしたSSD1306ディスプレイのドライバはMicroPython組み込みのframebufライブラリを利用しておりテキスト出力もそこそこ高速(但しフォントサイズは8×8ピクセル固定)だが、今回試したST7789の場合は全てPythonコードで書かれておりオーバーヘッドのせいで遅いのだろう。サンプルプログラムの中を覗いてみるpyhello.pyの中身を覗いてみると、テキスト出力をしている部分は一行あたり32ドット使うため240×240のディスプレイでは”Hello!”を7行表示するコードになっている。フォントサイズは色々あるようなので、沢山の文字を表示させたい場合は小さいフォントを選んで詰めて表示も出来るかもしれない。スクロール機能は未実装なので、別途実装するか他のライブラリを探す必要があるだろう。0CircuitPythonならドライバが充実している模様ST77xxのMicroPython用ディスプレイドライバを探している最中に、Adafruit社が過去MicroPython向けに作った各種ディスプレイドライバのGitHubリポジトリを見つけた。GitHub.github.com現在Adafruit社は上記リポジトリのメンテをしておらず、CircuitPythonに力を入れているようだ。CircuitPython用のドライバは下記リポジトリに各種置かれている。CircuitPython...github.comまとめMicroPythonでST7789フルカラー液晶ディスプレイを一応動作させる事が出来たが、ST7789用ドライバは最低限の描画機能しか持っておらず別途見つけたテキスト描画ライブラリも単に文字が表示出来るだけで、実用性は高くない印象。動作が遅い点に関してだけ言えばMicroPythonをカスタムビルドすれば改善しそうだが、MicroPythonでフルカラー液晶を使いたい理由も特に無いし諦めた方が無難かも。MicroPythonにはキャラクタ表示タイプのディスプレイ(1602LCDなど)やMicroPython組み込みのframebufライブラリを利用しているSSD1306搭載の物の方が相性が良さそうだ。一方でCircuitPythonならAdafruit社によるディスプレイドライバが充実している模様。IoTデバイス上のPython環境でどうしてもグラフィック型ディスプレイを使いたくなったら、CircuitPythonをチェックすると良いかもしれない。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。けん日々の電子工作やプログラミングの内容を備忘録を兼ねて記事にしております。趣味でやっている事なので「やりたい」と思ったら時間や手間を惜しまずにやり遂げることがモットー。記事の信頼性向上のため、情報源はターゲットデバイスの開発元による公式ドキュメントなど一次情報を徹底的に(しつこく)調べるようにし、その他の二次情報には極力頼らないように心がけています。e-DIYで行こう!.ホーム検索トップサイドバ。