【得捷电子Follow me第2期】任务1:控制屏幕显示中文
[复制链接]
目录
一、 开箱与环境搭建
1、 介绍
2、 引脚分布
3、 环境搭建
4、 运行第一个CircuitPython程序
二、 控制屏幕显示中文
一、开箱与环境搭建
- 介绍
Feather ESP32-S3具有双核240 MHz芯片。ESP32-S3迷你模块配有4 MB闪存和2 MB PSRAM,以及512KB的SRAM,因此它非常适合与CircuitPython支持一起使用或在任何需要大量缓冲区的时候使用:对于快速内存访问,请使用SRAM;对于较慢但更宽敞的访问,则使用PSRAM。它也非常适合在ESP-IDF或Arduino支持下使用。
彩色TFT连接至SPI引脚,并使用未暴露于分接焊盘的额外引脚进行控制,像素为240x135,是IPS,所以你可以在任何角度获得明亮的颜色。背光灯还连接到一个单独的引脚,因此您可以根据需要使用PWM来调节背光亮度。
- 引脚分布
- 环境搭建
Feather ESP32-S3开发板具有多种开发方式。可以使用CircuitPython或者Arduino进行开发,当然也可以使用esp32原生的idf环境进行开发。
本文计划使用对初学者更加友好的CircuitPython进行开发。因此,环境搭建也将以CircuitPython为例进行介绍。
- 下载官网最新版本的CircuitPython固件(.UF2)。官网网址:https://circuitpython.org/board/adafruit_feather_esp32s3_tft/
- 将开发板通过usb接如电脑。
- 双击板载的reset按键,使开发板进入固件烧录模式,此时,板载的RGB灯的颜色显示为固定的绿色。同时,板载的spi显示屏上显示的内容如下图所示。
- 此时,在电脑少会显示一个名叫FTHRS3BOOT的磁盘。
- 将前面下载好的CircuitPython固件(.uf2)放入FTHRS3BOOT磁盘中(拖拽进去就可以)。
- .uf2文件拖入到FTHRS3BOOT磁盘以后,等待一会,电脑中的FTHRS3BOOT磁盘会消失,同时会出现一个名叫CIRCUITPY的新磁盘,说明circuitPy固件下载成功了。至此,CircuitPython的环境就搭建完成了。
4、运行第一个CircuitPython程序
默认CIRCUITPY磁盘里会有个code.py的文件,里面就是要运行的CircuitPython代码,用任意编辑器打开,将其内容修改为print("Hello CircuitPython"),并保存。保存的时候开发板会自动重启,然后在板载显示屏上就能看到Hello CircuitPython字样了。
二、控制屏幕显示中文
控制屏幕显示文字信息需要用到CircuitPython Libraries,不能像打印Hello World一样仅使用内建的modules实现。
因此,第一步需要获取到相关的Libraries。通过查看CircuitPython的官方文档,可以找到Libraries的下载链接:https://circuitpython.org/libraries。
根据开发板使用的CircuitPython的版本选择相应的Libraries版本进行下载。
下载完成后,解压以后会看到比较重要的两个文件夹,一个是examples,另外一个是lib。其中examples是开发板的相关的例程,lib就是我们需要的一些Libraries。例程和Libraries都非常全面。
对于板载显示屏,examples目录下也提供了许多的例程,可以参考这些例程进行修改使其支持中文的显示。
基于这些例程和lib,如果要显示中文,基本上只需要提供中文字库就行了,没有其它太多的改动,还是比较简单的。
如下使我根据例程修改的显示中文的CircuitPython程序,改动只有三处:
①将字库替换为中文字库
②设置要显示的文本
③设置要显示的文本的坐标
三个改动中比较困难的是中文字库的生成。网上下载的bdf的字库一般都比较大,无法放入开发板中,开发板只能放差不多2M左右的文件。我的做法是将bdf转换为pcf格式,使用的工具是bdftopcf,这个工具貌似只有linux版本,没有找到windows下的对应工具。Linux下通过如下命令进行安装:
apt-get update
apt-get install xfonts-utils
使用方法:
bdftopcf font.bdf > font.pcf
将font.bdf替换为实际的BDF字体文件名。执行此命令,将会将BDF字体转换为PCF格式,并生成名为font.pcf的文件。
得到.pcf中文字库后,将其拷贝到开发板磁盘的fonts目录下,如果没有fonts目录,需要创建一个fonts目录。
再将对应的lib文件拷贝到开发板磁盘下的lib目录下:
最后将代码拷贝到code.py文件中保存,保存完成后,稍等一会就能看到屏幕上显示了对应的中文文字信息。
code.py文件内容:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This example uses adafruit_display_text.label to display text using a custom font
loaded by adafruit_bitmap_font
"""
import board
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
# use built in display (MagTag, PyPortal, PyGamer, PyBadge, CLUE, etc.)
# see guide for setting up external displays (TFT / OLED breakouts, RGB matrices, etc.)
# https://learn.adafruit.com/circuitpython-display-support-using-displayio/display-and-display-bus
display = board.DISPLAY
# try uncommenting different font files if you like
font_file = "fonts/HZZK_13px.pcf"
# font_file = "fonts/Junction-regular-24.pcf"
# Set text, font, and color
text = "永和九年,岁在癸丑,暮春之初,\n"\
"会于会稽山阴之兰亭,修禊事也。\n"\
"群贤毕至,少长咸集。此地有崇山\n"\
"峻岭,茂林修竹,又有清流激湍,\n"\
"映带左右,引以为流觞曲水,列坐其次。"
font = bitmap_font.load_font(font_file)
color = 0xFF00FF
# Create the text label
text_area = label.Label(font, text=text, color=color)
# Set the location
text_area.x = 0
text_area.y = 8
# Show it
display.show(text_area)
while True:
pass
|