2024年3月16日土曜日

aitendoの丸形液晶(M128GC9A01A, GC9A01)をRP2040-ZEROで試す

aitendoの丸形液晶 M128GC9A01Aについて、前回、M5+UI FLOWで挑戦するも、失敗。
商品リンク:https://www.aitendo.com/product/20938

今度は、raspberry pi pico互換のRP2040-ZEROで挑戦する。
まずはSPI接続。

以下、スイッチサイエンスさんより画像を借用。
RP2040-ZEROのSPIは2系統あり、片方は裏面のパッドや左右のピンに点在してしまっているので、今回はSPI0を使い右側で固めて配線することにする。電源は左側固定で、さらにジャンパ使うのであまり意味はないが。

配線表とmicropython用のライブラリや使用例を見比べて、以下のつなぎ方に決定。

  1. GND → GND
  2. VCC → 3V3
  3. SCL → GP6/SPI0 SCK
  4. SDA → GP5/SPI0 TX
  5. RES → GP0
  6. DC → GP1
  7. CS → GP5/SPI0 CSn
  8. BLK → 未使用
試しては無いが、たぶん3, 4以外は任意のピンでよいとは思う。
ライブラリはこちら:https://github.com/russhughes/gc9a01py/tree/mainを使わせていただく。
libのgc9a01py.pyをダウンロードし、ThonnyでRP2040-ZEROのルートにこのライブラリのpyファイルを格納すればOK。
下図のように、デバイスのルート直下にファイルが表示されていれば大丈夫。これで、「import gc9a01py as GC9A01」というようにして呼び出せるようになる。

本当に大したコードではないけど、私自身がこのディスプレイをRP2040-ZERO+micropythonで利用するのに結構苦労したので残しておきます。

from machine import Pin, SPI
import gc9a01py as GC9A01

# GC9A01初期化
SPI_PORT = 0
SPI_BAUDRATE = 60000000
RESET_PIN = Pin(0, Pin.OUT)
CS_PIN = Pin(5, Pin.OUT)
DC_PIN = Pin(1, Pin.OUT)

spi = SPI(SPI_PORT, baudrate=SPI_BAUDRATE, sck=Pin(6), mosi=Pin(7))
tft = GC9A01.GC9A01(spi=spi, dc=DC_PIN, cs=CS_PIN, reset=RESET_PIN, backlight=None, rotation=0) 
 
tft.fill(GC9A01.RED)
for i in range(240):
    tft.pixel(i, i, GC9A01.GREEN)
    tft.pixel(120, i, GC9A01.BLUE)
    tft.pixel(i, 120, GC9A01.WHITE)

これがうまく動くと、冒頭の画像のようになる。赤背景に、緑青白の線を引いただけ。
速度を気にするなら矩形や線描写のメソッドを使ったほうがいいはず。

以上。

0 件のコメント:

コメントを投稿