0.参考案例:
CircuitPython | CircuitPython Hardware: ILI9341 TFT & FeatherWing | Adafruit Learning System
与wio terminal内置的TFTLCD显示器使用相同的ILI9341驱动,320 x 240显示屏。
1.前置条件:
硬件wio terminal掌机
CircuitPython on Wio Terminal对应驱动(安装参考:CircuitPython with Wio Terminal | Seeed Studio Wiki)
Adafruit最新的库(安装参考:CircuitPython Libraries | Welcome to CircuitPython! | Adafruit Learning System)
2.我的版本:
CircuitPython版本8.0.5
Adafruit库版本Bundle for Version 8.x 20230513(我也看不懂,照着对应版本下最新的就行)
编辑器Thonny(如果以前没用过可以试试推荐Adafruit的Mu Editor,我懒得换了)
3.得到示例代码为:
import board
import busio
import digitalio
spi = busio.SPI(clock=board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.TFT_CS)
dc = digitalio.DigitalInOut(board.TFT_DC)
from adafruit_rgb_display import ili9341, color565
display = ili9341.ILI9341(spi, cs=cs, dc=dc)
display.fill_rectangle(0, 0, 120, 170, color565(0, 0, 255))
4.预期效果为
5.实际效果为
>>> %Run -c $EDITOR_CONTENT
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
ValueError: TFT_CS in use
6.解决进度
考虑是
cs = digitalio.DigitalInOut(board.TFT_CS)
digitalio.DigitalInOut方法是自定义io绑定为屏幕使用所用的方法,针对内置引脚board.TFT_CS可能用其他的调用方法,继续挖掘一下。
目前还在找,解决了就更新。
----6.24已解决----
先上效果图,明天整理代码。
集成在wieTerminal内部的显示屏可以直接用board.diaplay调用,不需要再绑定pin或者显示器驱动。
对应参考文档的这部分circuitpython-libraries【往下滑,看helper】
下一期主要就是解决常见图片如何降低位深度、怎么显示gif以及解决汉字显示的问题啦~~~
import board
import displayio
from adafruit_display_shapes.rect import Rect
from adafruit_display_shapes.circle import Circle
from adafruit_display_shapes.roundrect import RoundRect
splash = displayio.Group()
board.DISPLAY.show(splash)
color_bitmap = displayio.Bitmap(320, 240, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette)
# print(bg_sprite.position)
splash.append(bg_sprite)
rect = Rect(80, 20, 41, 41, fill=0x0)
splash.append(rect)
circle = Circle(100, 100, 20, fill=0x00FF00, outline=0xFF00FF)
splash.append(circle)
rect2 = Rect(50, 100, 61, 81, outline=0x0, stroke=3)
splash.append(rect2)
roundrect = RoundRect(10, 10, 61, 81, 10, fill=0x0, outline=0xFF00FF, stroke=6)
splash.append(roundrect)
import board
import displayio
import adafruit_imageload
image, palette = adafruit_imageload.load(
"images/4bit.bmp", bitmap=displayio.Bitmap, palette=displayio.Palette
)
tile_grid = displayio.TileGrid(image, pixel_shader=palette)
group = displayio.Group()
group.append(tile_grid)
board.DISPLAY.show(group)
# bmp图要求在16位深度色彩及以下