ESP32+MicroPythonで、SPIでOLED表示ができたので、同じくSPI接続のTFT LCDも動かしてみました。
使用したLCDはこちらの記事で使用したもので、128×160ピクセル、コントローラはST7735系です。
MicroPythonでのドライバは、おなじみのAdafruitのものがありました。
adafruit/micropython-adafruit-rgb-display: MicroPython library for RGB pixel displays.
結線は基本的には前回使用したOLEDと同様に
LCD ESP32
VLED 3V3
RST IO17
A0 IO16(DC)
SDA IO13(MOSI)
SCK IO14(CLK)
VCC 3V3
CS IO5
GND GND
と接続してみました。
ソフトウェアですが、上記のAdafruitで公開されているファイルのうち、
rgb.py st7735.py
の2つが必要です。
まずrgb.py、次にst7735.pyを転送もしくはREPLでコピペします。
やり方は以前と同じです。
使い方の例です。冒頭の写真の表示を出力します。
from machine import Pin, SPI spi = SPI(1, baudrate=30000000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(13), miso=Pin(12)) lcd = ST7735R(spi, dc=Pin(16), cs=Pin(18), rst=Pin(17)) lcd.fill(0) for x in range(128): for y in range(160): lcd.pixel(x,y,color565(x*2, y*3//2, 255-x-y*3//4))
st7735.pyではST7735とST7735Rの二つのクラスが定義されていますが、私のLCDモジュールはST7735Rのほうで動作しました。
SPIのビットレートを早くしすぎるとディスプレイのほうが追いつかない(ドットが1つ飛ばしになる)ので、もしうまく動作しない場合はbaudrateの値を小さくしてみてください。
全部Micropythonで書かれているので、さすがに実行速度はあまり早くありません。
しかし、インタープリタで実行できる有難味は捨てがたいですね。
コメント