前回、超小型0.66インチのOLEDモジュールで表示を試しましたが
今度は2インチ強、やや大き目の液晶モジュールを買ってみました。
こんな部品です。
AliExpressのあちこちで売っています。
OLEDではなく、128x64ドットのバックライト付き液晶パネル。
チップはST7567S、I2C制御で550円くらい。画面の大きさを考えるとコスパ良。
パネル色は青、黒、グレーの三種類があります。
面白そうなので、青をポチッと注文。
画面のサイズは48.6mm×24.3mmで、計算すると2.13インチ。
0.96インチ SSD1306 OLEDと比べて、約5倍の面積です。
部品の到着後、ESP32に接続してみたところ
既成のライブラリでは動きませんでした。
有名な「U8g2lib.h」がST7567Sに対応しているようですが、
手元の部品=128x64 I2Cではうまく動かず(私の使い方が悪いのかもしれません)
どうやら「ST7567S 128×64 I2C」でも、微妙に仕様の異なる部品があるようです。
ダメやんけ。
結局、自前で制御のプログラムを作りました。
wire.hだけ読み込んで、あとはデータシートを元にポチポチとC言語で書き
20ほどあるコマンドを1つ1つ試して、想定通りの動きをするか確認していきます。
初期化コマンドをまとめるだけで一日がかりでした。
でもコマンドをほぼ全部試した結果、液晶の動きをひと通り理解できたと思います。
ネットに役立つ情報が見つからず苦戦する中、
下記のMicroPython向けソースコードが参考になりました。公開された方に感謝です。
https://forum.micropython.org/viewtopic.php?f=21&t=12747
この部品はキャラクタディスプレイではなく「グラフィックディスプレイ」なので
英数字のフォントデータをソフト側に用意し、
データシートを参考にして文字描画プログラムを作りました。
そして完成、無事動作。
以前作った「I2S WAVプレイヤー」にST7567Sの画面を取り付けてみました。
左下のSSD1306(0.96インチ)と比べて、大きい!
文字が大きすぎて、ドットのカクカクが見えるほど。
使用感や表示速度はOLEDとほぼ変わりません。
パネルの追従が遅く、0.1~0.2秒ほど残像がじわっと残ります。唯一の欠点でしょうか。
レトロな液晶の表示っぽくて、これはこれで趣があります。
発色はバックライトが明るくあざやか。綺麗に青と白が出ています。
目立つ滲みやチラつきはなく、視認性良好。
視野角は上下左右とも実用十分と感じました。
結論:なかなか良い部品です。
時計や、センサーの値表示に向いてそうですね。
電子工作でいろいろと用途を考えて、使ってみたいと思います。