【得捷电子Follow me第2期】+基于CircuitPython的中文显示
[复制链接]
本帖最后由 手下败酱 于 2023-10-20 10:31 编辑
任务1:控制屏幕显示中文
效果图
任务功能对应的主要代码片段及说明
准备工作: Adafruit ESP32-S3 TFT Feather 板子 拿到板子之后把下载到的包(adafruit-circuitpython-adafruit_feather_esp32s3_tft-en_US-8.2.6.uf2)拖到电脑显示的U盘里面
还需要有几个工具,因为要显示的中文字,在库里面没有哦,所以需要自己生成或者使用别人整理好的字库文件,当然使用自己喜欢的字体是多么美好的一件事情啦。 FontSmaller_2.0 FontSmaller 字体文件子集化工具
u8g2_fontmaker
这两个就是我生成bdf的字库的工具了,使用方法也非常简单
在自己电脑路径找一下自己喜欢的字体 C:\Windows\Fonts 打开FontSmaller_2.0 直接选中喜欢的字体,再出入自己需要显示的字
点击 OK 选择生成路径,这样字库就好了
再用u8g2_fontmaker转bdf一下就好了 具体用法去看一下reade me 就知道了 其实就是修改这个文件就行了,对了别忘记把刚刚转的字体文件放进 font 文件
最后把生成的bdf文件拖进自己放字体的文件夹 听说把bdf转成pdf 加载速度会更快些 网站我也丢这里了
BDFtopCF字体转换器 (adafruit.github.io)
以下为code.py 中的源代码说明
这段主要是导入相关的模块有板子自带的,也有存放在板子U盘中
#导入自带模块
import board
import displayio
#导入显示图片、显示位图字体模块等其他的
import adafruit_imageload
from adafruit_bitmap_font import bitmap_font
from adafruit_display_text.scrolling_label import ScrollingLabel
from adafruit_display_text import label
from adafruit_st7789 import ST7789
一些TFT屏幕的初始化,还有一些定义
# 使用固件自带的屏幕设备,不需要另行初始化屏幕参数
display = board.DISPLAY
# 创建本例程里的唯一图像组
group = displayio.Group()
# 加载字体并定义字体颜色为黑色
font = bitmap_font.load_font("/font/Jay_Chou-16.bdf")
nun_font = bitmap_font.load_font("/font/UPO-48.bdf")
color = 0xFFFFFF
这段主要是对label的处理,先把显示的内容存放,再调用label函数 第一个函数是字体 第二个是显示的文本 第三个是显示的颜色 第四个是显示的背景颜色,最后一个是最大宽度,在设置一下ScrollingLabel函数实现滚动 最后显示图像数组,最后在主循环中循环滚动
############################显示##########################################
date = label.Label(font, text=" 晴天 \n – 周杰伦 (Jay Chou)", color=color)
date.x = 10
date.y = 10
group.append(date)
text1 = "\n 故事的小黄花\n 从出生那年就飘着\n 童年的荡秋千\n 随记忆一直晃到现在\n Re So So Si Do Si La\n So La Si Si Si Si La Si La So\n 吹着前奏望着天空\n 我想起花瓣试着掉落\n "
text_area = label.Label(font, text=text1, color=0x0000FF, background_color=0xFFAA00,max_characters=20)
#max_characters 显示的长度 animate_time 滚动的速度
text_area =ScrollingLabel(font,text=text1, max_characters=80, animate_time=0.26)
text_area.x = 10
text_area.y = 68
group.append(text_area)
###############################################################################
# 显示修改后的图像组
display.show(group)
#循环
while True:
text_area.update()
这里是整个工程的文件
这是效果是视频
VID_20231019_175652
|