첫 Raspberry Pi Pico ㉛ Circuitpython으로 TFT 디스플레이에 표시

SPI 버스는 I2C 버스에 비해 전송 속도가 빠르기 때문에 표시 면적이 큰 표시기로 사용됩니다. 매뉴얼 에서는, board.SPI() → busio.SPI 라고 쓰여 있으므로, busio 모듈의 SPI 를 사용합니다.

TFT 디스플레이 ST7789 이용



Adafruit 으로부터 입수한 SPI 접속의 TFT 디스플레이를 이용합니다. 320x240 도트에서 백라이트는 기본적으로 ON입니다.


연결




ST7789 보드 단자
Pico 터미널 (GPIO)
이름


BackLight
-
-

SD CS
-
-

D/C
GP7
GP7

RESET
GP6
GP6

LCD CS
GP5
GP5

MOSI
GP3
SPI0 TX

미소
-
-

SCK
GP2
SPI0 SCK

GND
GND
GND

3.3
-
-

Vin
3.3V
3V3(OUT)


프로그램



Helvetica-Bold-16.bdf는 여기에서 다운로드 다음 CIRCUTIPPY 드라이브의 루트에 복사합니다.
텍스트의 표시로 좁혀지고 있습니다. CPU 온도를 text_area2로 표시합니다.
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

from board import *
import busio
import terminalio
import displayio
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
from adafruit_st7789 import ST7789
import microcontroller
import time

displayio.release_displays()  # Release any resources
spi = busio.SPI(clock=GP2, MOSI=GP3)  # SPI0BUS PIN
display_bus = displayio.FourWire(
    spi, command=GP7, chip_select=GP5, reset=GP6) # other PIN
display = ST7789(display_bus, width=240, height=320)
splash = displayio.Group()  # Make the display context
display.show(splash)

# Draw a label=text
text_group = displayio.Group(scale=4, x=20, y=110)
text = "Temp"
font = bitmap_font.load_font("/Helvetica-Bold-16.bdf")
label.anchor_point = (0.0, 0.0)
label.anchored_position = (0, 0)
text_area = label.Label(font, text=text, color=0xFF00FF)
text_group.append(text_area)  # Subgroup for text
splash.append(text_group)

text_group = displayio.Group(scale=2, x=100, y=10)
text = 'start'
text_area2 = label.Label(terminalio.FONT, text=text, color=0xFFFF00)
text_group.append(text_area2)  # Subgroup for text
splash.append(text_group)

RANGE = 66
while True:
    for i in range(1,RANGE):
        text_area2.text = str(round(microcontroller.cpu.temperature,1)) + 'C'
        text_area2.y = i
        text_area2.x = int(i/2)

    for i in range(1,RANGE):
        text_area2.text = str(round(microcontroller.cpu.temperature,1)) + 'C'
        text_area2.y = RANGE+i
        text_area2.x = RANGE-int(i/2+RANGE/2)

    for i in range(RANGE,1,-1):
        text_area2.text = str(round(microcontroller.cpu.temperature,1)) + 'C'
        text_area2.y = RANGE+i
        text_area2.x = int(i/2-RANGE + RANGE/2)

    for i in range(1,RANGE):
        text_area2.text = str(round(microcontroller.cpu.temperature,1)) + 'C'
        text_area2.y = RANGE-i
        text_area2.x = int(i/2 - RANGE/2)

실행중인 모습입니다. 두 개의 텍스트 영역은 스프라이트 화면이므로 독립적입니다. 온도를 표시하고 있는 부분을, 벽에 부딪치면 코스를 바꾸는 형태로 움직이고 있습니다.



좋은 웹페이지 즐겨찾기