TFT LCD(ST7735R)をMicroPythonで動かしてみた

st7735r-micropython.jpg

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

と接続してみました。

esp32-st7735r.png

ソフトウェアですが、上記の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で書かれているので、さすがに実行速度はあまり早くありません。
しかし、インタープリタで実行できる有難味は捨てがたいですね。

コメント