このページの目次
ショップ
1.9インチ 170x320ピクセル
- https://store.shopping.yahoo.co.jp/microfan/tft19-170x320-st7789.html
- https://www.amazon.co.jp/dp/B0DP9FD7XB/
1.54インチ 240x240ピクセル
- https://store.shopping.yahoo.co.jp/microfan/tft154-240x240-st7789.html
- https://www.amazon.co.jp/dp/B0DNMPB2Q9/
製品概要
ST7789ドライバ(IC)を使用したTFTディスプレイです。
画面の大きさやピクセル数の異なるモデルがあります。
CircuitPythonでのプログラミング
PICOを搭載したPICO-DISPLAY-KITを対象としたCircuitPythonでのプログラミングの例です。
import board
import busio
import displayio
from fourwire import FourWire
from adafruit_st7789 import ST7789
displayio.release_displays()
spi = busio.SPI(clock=board.GP18, MOSI=board.GP19)
tft_cs = board.GP17
tft_dc = board.GP28
display_bus = FourWire(spi, command=tft_dc, chip_select=tft_cs)
display = ST7789(display_bus, width=320, height=170, colstart=35, rotation=90) # 1.9 inch 170x320
# display = ST7789(display_bus, width=240, height=240, rowstart=80, rotation=180) # 1.54 inch 240x240
group = displayio.Group()
display.root_group = group
# ここまではグラフィックス利用の初期化で今後も共通
import simpleio
from adafruit_display_shapes.circle import Circle
class Ball(Circle):
# 初期座標、縦横速度、色を与える
def __init__(self, x0, y0, r, vx, vy, color):
super().__init__(x0, y0, r, fill=color, outline=0xFFFF00)
self.vx = vx
self.vy = vy
def tick(self):
# 縦横速度分移動して
self.x0 += self.vx
self.y0 += self.vy
# 画面の端に来たら速度を反転させて跳ね返る
if self.x0 <= self.r or self.x0 >= (display.width-1)-self.r:
simpleio.tone(board.GP20, 1000, 0.01)
self.vx = -self.vx
if self.y0 <= self.r or self.y0 >= (display.height-1)-self.r:
simpleio.tone(board.GP20, 500, 0.01)
self.vy = -self.vy
ball = Ball(100, 100, 10, 2, 5, 0x00FF00)
group.append(ball)
import time
while True:
group[0].tick()
time.sleep(0.02)