【得捷电子Follow me第2期】任务1:Adafruit ESP32-S3 TFT Feather 控制屏幕显示中文
[复制链接]
本帖最后由 aramy 于 2023-8-12 20:43 编辑
"Follow me活动”是DigiKey联合EEWORLD发起的为期一年的“跟技术大咖学技术,完成任务返现报销”活动。这是我参加第二期活动的开发板Adafruit ESP32-S3 TFT Feather。主控是ESP32-S3
烧写固件:
ESP32-S3支持Arduino,esp-idf,micropython,circuitpython做开发。其中觉着circuitpython最简单,所以这里就用circuitpython来做开发啦!板子拿到手有厂家的程序,可以点亮屏幕,我们这里从一无所有开始做起。首先到这里下载厂家的固件Adafruit_Feather_ESP32S3_TFT_FactoryTest.bin。使用esp烧写工具通过串口烧写到板子里。如果提示:连接串口失败。就按住boot按键,再按下reset按键就好了。
然后烧写固件完成后,上电重启开发板,电脑会有U盘弹出,将circuitpython固件(adafruit-circuitpython-adafruit_feather_esp32s3_tft-en_US-8.2.2.uf2)拖到U盘里,然后开发板就会自动重启。circuitpython就准备好了。
驱动屏幕:
circuitpython环境非常好,已经帮忙初始化好了 彩色 1.14“ IPS TFT屏幕。我这里用Thonny作为编辑器,来进行代码的开发。 circuitpython中有个board的库,可以使用dir(board)查看这个类库的方法,这个类库中有DISPLAY是用来控制屏幕显示的,通过dir(board.DISPLAY)可以查看有哪些方法可以使用。这里有个board.DISPLAY.brightness变量,可以用来控制屏幕亮度,设置为0,则屏幕熄灭,设置为1,屏幕为最大亮度。
显示汉字:
给lib目录下上传 adafruit的字库文件,但是这里adafruit的字库都是英文字库,要想显示汉字,还需要额外的中文字库。这里我使用了网上找的 。这里要留意,因为空间有限,装不了太大的字库,这里我只载入了wenquanyi_10pt.pcf这个汉字字库。最后将这段代码写到code.py里。就能显示啦!横屏、竖屏都做了适配。
- import board
- import displayio
- from adafruit_display_text import label, wrap_text_to_lines
- from adafruit_bitmap_font import bitmap_font
-
- dis_str=" 搭载 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管脚和丰富的通信接口,集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE),配备原生 USB,可用作键盘/鼠标、MIDI 设备、磁盘驱动器等"
-
- 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
-
- font = bitmap_font.load_font("wenquanyi_10pt.pcf")
- color = 0x00FF00
-
- text_group = displayio.Group()
- text_area = label.Label(font, text=screen_dispstr(dis_str), 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:
- pass
|