得捷电子 Follow me 第2期任务提交——控制屏幕显示中文
[复制链接]
得捷电子 Follow me 第2期任务提交——控制屏幕显示中文
因为要显示中文,所以字库文件是必不可少的 目前固件只能识别到bdf和pcf格式的字库,需要将ttf格式的字库转换为pcf格式的,这里需要用到一个字库转换工具otf2bdf,根据直播中老师的介绍讲解以及其他坛友分享的经验,找到了这个字典文件大小刚好很适合本次开发将会在文尾进行上传
通过下面的代码可以在屏幕上显示字库上的所有中文文字
首先是导入包 此处用到board displayio adafruit_display_text adafruit_bitmap_font 包
可以通过vscode的快捷键直接添加 具体步骤如下
按下键盘ctrl+shift+p在弹出的对话框输入 如下
便可以得到Circuitpython插件提供的自动安装包服务
导包代码如下
import board
import displayio
from adafruit_display_text import label, wrap_text_to_lines
from adafruit_bitmap_font import bitmap_font
然后定义一条中文字符串信息 并且加载字库信息 显示中文字体颜色等 代码如下
dis_str = "我是一条中文信息"
font = bitmap_font.load_font("wenquanyi_10pt.pcf")
color = 0x00FFFF
然后根据屏幕旋转角度确定每行能显示的字符数量
def screen_dispstr(str):
if board.DISPLAY.rotation % 180 == 0:
char_num = 23 # 横屏
else:
char_num = 13 # 竖屏
strbuf = ""
for i in range(len(str) / char_num):
strbuf = strbuf + str[i * char_num:(i + 1) * char_num] + "\n"
return strbuf
初始化显示屏
display = board.DISPLAY
board.DISPLAY.brightness = 0.35
board.DISPLAY.rotation = 0
实现显示中文字符
text_group = displayio.Group()
text_area = label.Label(font, text=screen_dispstr(dis_str), color=color)
text_area.x = 2
text_area.y = 6
text_area.line_spacing = 0.8
text_area.scale = 1
text_group.append(text_area)
display.show(text_group)
让程序循环 保持屏幕输出
while True:
pass
最后我们来看一下,完成效果。
通过下载学习老师提供的代码后学会了如何显示一张图片
image, palette = adafruit_imageload.load(
"images/ysqd.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)
通过调用image中palette这个方法可以实现在屏幕上显示一张图片 本次学习还发现了老师藏的彩蛋怎么是 原神启动!
|