601|2

166

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第2期】+任务1:控制屏幕显示中文 [复制链接]

 

Follow ME第2季使用到的开发板为Adafruit ESP32-S3 TFT Feather,板上载有TFT显示屏、NEOPixel指示灯以及电源管理芯片等外设,配合ESP32自身的Wifi和蓝牙功能,能够实现联网、获取网络数据并在显示屏上显示。

1 开发环境搭建

在Adafruit ESP32-S3 TFT Feather上进行开发,开发环境的搭建包括两部分,一是IDE的安装,这里选择Mu Editor,从官网下载安装包,安装选项选择默认即可。

安装完成后,选择开发板的运行模式为CircutPython。

在开发板上运行CircutPython需要烧写bootloader和CircutPython固件。其中bootloader固件只需要烧写一次即可,CircutPython固件可以选择不同版本的固件进行烧写。Bootloader固件烧写的方法通过esp flash tool下载,烧写前需要按组boot键,再按下rst键,最后松开boot键,进入Bootloader烧写模式。

完成上述操作后上电,就可以得到如下的画面:

此时,电脑上也会出现一个FTHRS3BOOT的虚拟U盘,从Adafruit官网下载该开发板对应的CircutPython UF2固件,将下载好的固件放入虚拟U盘中,会自动将固件烧写到芯片中。

烧写完成后会运行CircutPython,同时电脑上会出名为CIRCUITPY的USB设备,编写好的代码和库文件都存放在这里。其中的code.py是circutpython主程序的入口,其中的内容发生变化时,系统会复位并执行其中的代码。

2 控制屏幕显示中文

在屏幕上显示中文,需要屏幕的驱动、中文字库以及字符绘制驱动,其中屏幕的驱动在CircutPython固件中已经包含,可以通过REPL中输入help(‘modules’)查看已有的固件库。

中文字库由于需要占用较大的内存空间,使用

链接已隐藏,如需查看请登录或者注册
其中的一个字体(wenquanyi_10pt.pcf)。将字体文件存储到CIRCUTPY设备的lib文件夹下。就可以在程序中导入并使用该字符集了。

另外还需在lib文件夹下添加额外的adafruit_display_text库中的label, wrap_text_to_lines模块、adafruit_bitmap_font中的bitmap_font模块。这样就可以轻松地在显示屏上显示中文了。

CIRCUTPY设备上的lib文件夹中的内容如下。

开发板的BOOT按键可以作为按键输入来控制程序的运行,按键未按下时为True,通过检测其上升沿来调节显示文字的内容,显示中文的程序以及相应的注释如下。

# 在这里写上你的代码 :-)
#导入使用到的lib
import board
import digitalio
import displayio
from adafruit_display_text import label, wrap_text_to_lines
from adafruit_bitmap_font import bitmap_font

#初始化按键相关变量
button = digitalio.DigitalInOut(board.BUTTON)
button.switch_to_input(pull=digitalio.Pull.UP)
button_buf = button.value

#初始化显示屏参数
display = board.DISPLAY
board.DISPLAY.brightness = 0.35
board.DISPLAY.rotation = 0

font = bitmap_font.load_font("lib\wenquanyi_10pt.pcf")
color = 0xFF0000

text_change = 0

#设定文本显示范围
text_group = displayio.Group()
text_area = label.Label(font, text="Follow ME2 ", color=color)
text_area.x = 2
text_area.y = 10
text_area.line_spacing = 0.8
text_area.scale = 1

#启动屏幕显示
text_group.append(text_area)
display.show(text_group)
while True:
    # 检测按键边沿的上升沿,并改变文本切换控制变量
    if ((button_buf != button.value) and (button.value==False)) :
        text_change = text_change + 1
    button_buf = button.value
    
    if (text_change==1):
        text_area.text="EEWorld Forum社区\n"
    elif (text_change==2):
        text_area.text="ESP32 S3 Demo程序\n"
    elif (text_change==3):
        text_area.text="Feather Series产品\n"
    elif (text_change==4):
        text_change=1
        

程序的运行效果如视频所示。

任务一演示

 

3 问题

由于circuitpython固件的名字长度长,如果不注意可能会下载错固件型号,我在下载的时候就出现了这样的问题,在S3界面下载了S2的固件。文件名只差了一个字母,得到的结果则完全不同。大家做任务的时候一定要注意这个问题。

最新回复

界面非常好看呀,在哪里搞到的?感谢分享!  详情 回复 发表于 2023-8-20 21:41
点赞 关注
 
 

回复
举报

6628

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

主要问题还是中文字库由于需要占用较大的内存空间,,,

 
 
 

回复

6842

帖子

11

TA的资源

版主

板凳
 
界面非常好看呀,在哪里搞到的?感谢分享!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表