MicroPython
本章节包含以下部分,请按需阅读:
MicroPython 入门教程
初次接触 ESP32 MicroPython 开发,想要快速上手?我们为您准备了一套通用的 ESP32 MicroPython 入门教程。
- 第 1 节 搭建开发环境
- 第 2 节 基础知识
- 第 3 节 GPIO 数字输出/输入
- 第 4 节 ADC 模拟输入
- 第 5 节 PWM 输出
- 第 6 节 UART 通信
- 第 7 节 I2C 通信
- 第 8 节 SPI 通信
- 第 9 节 Wi-Fi 基础用法
- 第 10 节 网页服务器
- 第 11 节 蓝牙
- 第 12 节 综合项目
配置开发环境
1. 烧录 MicroPython 固件和配置 Thonny
请参考 搭建 MicroPython 开发环境教程 烧录 MicroPython 固件。
2. 其他提示
-
MicroPython 固件下载链接:https://micropython.org/download/ESP32_GENERIC_S3/
-
若通过 乐鑫 Flash 下载工具 烧录 MicroPython 固件,烧录地址为
0x0。
示例程序
| 示例程序 | 基础例程说明 |
|---|---|
| cst816_example.py | 触摸屏幕,打印相应坐标 |
| alien.py | 随机显示 “alien.jpg” 图像 |
| bitarray.py | 创建并展示多个随机位置的 “吃豆人” 精灵动画 |
| hello.py | 随机显示不同颜色的 “Hello!” 文本,并且可以通过循环切换不同的旋转角度 |
| hershey.py | 循环展示不同的问候语 |
| jpg.py | 轮流显示两张 JPEG 图片 |
| noto_fonts.py | 展示三种不同字体的名称 |
| pbitmap.py | 显示一个预编译的位图图像 |
| rotation.py | 循环展示不同旋转值下的文本显示效果 |
| scroll.py | 在显示屏上实现字符的平滑滚动显示 |
上传例程及特殊例程
上传例程
- 将本地文件上传到开发板,选择文件,鼠标右键,找到"upload to/", 进行下载

- 以下是全部下载完成的界面,下载的文件请务必与红框内文件保持一致,否则可能会运行失败

- 选择。py 后缀的文件,点击绿色按钮烧录运行(运行图置于后文)

- 运行另一份文件时要先点击红色 stop 按钮,这样另一份文件才能正常运行

特殊例程
在所给例程中,bluenarble.py、cst816.py、cst816_example.py 这几个文件较为特别。请将下面几点全部看完之后,再尝试自行烧录。
- bluenarble.py 存放的是图片,cst816.py 存的是触控板实现操作的函数,运行无现象

- cst816_example.py 运行之后,触摸屏幕会打印相应坐标,LCD 不会被点亮

alien.py
程序说明
- 该程序用于在特定显示屏上随机显示
“alien.jpg”图像
硬件连接
- 开发板接入电脑

代码分析
GC9A01():GC9A01 构造函数重要性在于建立硬件连接、设置初始参数并创建可操作的显示屏对象,为后续的显示操作奠定基础spi_interface:建立与显示屏的 SPI 通信width和height:设置显示屏分辨率reset_pin:连接显示屏的各种控制引脚rotation:设置初始旋转角度
运行效果
- LCD 屏幕显示

bitarray.py
程序说明
- 该程序是在特定显示屏上创建并展示多个随机位置的 “吃豆人” 精灵动画
硬件连接
- 开发板接入电脑
代码分析
pacman类的move方法:负责更新 “吃豆人” 精灵的状态,实现其在屏幕上的移动和动画效果- 首先增加精灵的当前步数,然后通过取模操作确保步数在规定的
SPRITE_STEPS范围内循环,这可能对应精灵的不同动画帧或状态 - 接着在水平方向上移动精灵的位置,当精灵的水平位置达到特定值 302 时,重置步数,可能是为了触发特定动画状态或行为。最后,通过取模操作确保精灵的水平位置在一定范围内循环,避免超出显示区域
- 首先增加精灵的当前步数,然后通过取模操作确保步数在规定的
tft.map_bitarray_to_rgb565tft.map_bitarray_to_rgb565函数根据精灵的当前步数从 SPRITE_BITMAPS 中选取位图数据,将其转换为 RGB565 格式的缓冲区 sprite。同时,指定了精灵的宽度以及前景色和背景色
tft.blit_buffertft.blit_buffer 函数将转换后的缓冲区绘制到显示屏上特定的位置,该位置由精灵的当前坐标确定,并指定了精灵的宽度和高度
运行效果
- LCD 屏幕显示

hello.py
程序说明
- 该程序是在特定的显示屏上随机显示不同颜色的 “Hello!” 文本,并且可以通过循环切换不同的旋转角度
硬件连接
- 开发板接入电脑
代码分析
tft.text:在显示屏上绘制文本 “Hello!”- 使用指定字体,文本位置通过随机数在显示屏范围内确定,前景色和背景色由随机生成的 RGB565 颜色值决定
while True:实现 “Hello!” 文本在不同旋转角度下的随机显示动态效果- 通过无限循环和遍历四个旋转角度,设置显示屏旋转角度后清空屏幕,计算文本显示范围,循环调用
tft.text函数在随机位置以随机颜色显示文本
- 通过无限循环和遍历四个旋转角度,设置显示屏旋转角度后清空屏幕,计算文本显示范围,循环调用
运行效果
- LCD 屏幕显示

hershey.py
程序说明
- 该程序是在一个特定的显示屏上循环展示不同的问候语
硬件连接
- 开发板接入电脑
代码分析
main:函数中的循环部分,在显示屏上循环显示不同字体、颜色和问候语- 逐行移动显示位置,获取下一个颜色、字体和问候语,清除上一行内容并绘制新内容,当超出一定范围时重置行位置,添加延迟控制显示速度
cycle:创建可循环迭代的对象- 接受参数,若可迭代则直接循环,若单个元素则转换为可迭代列表并循环返回,用于方便地循环使用颜色、字体和问候语列表
运行效果
- LCD 屏幕显示

jpg.py
程序说明
- 该程序是在特定的显示屏上轮流显示两张 JPEG 图片
硬件连接
- 开发板接入电脑
代码分析
main:函数中的循环部分,在显示屏上循环显示不同字体、颜色和问候语- 遍历图片文件名列表,调用
tft.jpg函数在特定位置以较慢方式显示图片,然后等待 5 秒
- 遍历图片文件名列表,调用
tft.jpg:在显示屏上显示指定的 JPEG 图片- 读取、解码图片文件并绘制到显示屏,根据传入参数确定显示位置和模式
运行效果
- LCD 屏幕显示


noto_fonts.py
程序说明
- 该程序是在特定的显示屏上展示三种不同字体(NotoSans、NotoSerif、NotoSansMono)的名称,并且将这些字体名称以居中的方式显示在不同的行上
硬件连接
- 开发板接入电脑
代码分析
main:程序主入口,初始化显示屏并展示三种字体名称- 创建显示屏对象并初始化,填充背景为黑色,调用
center函数依次显示三种字体名称
- 创建显示屏对象并初始化,填充背景为黑色,调用
center:将给定字符串以指定字体在显示屏上居中显示- 获取显示屏宽度,计算字符串宽度,若小于屏宽则水平居中计算坐标,否则左对齐,最后在指定位置显示字符串
运行效果
- LCD 屏幕显示

pbitmap.py
程序说明
- 该程序是在特定的显示屏上显示一个预编译的位图图像
硬件连接
- 开发板接入电脑
代码分析
main:程序主入口,初始化显示屏并显示位图- 创建显示屏对象,初始化后填充黑色背景,调用
tft.pbitmap显示预编译位图模块中的图像
- 创建显示屏对象,初始化后填充黑色背景,调用
tft.pbitmap:在显示屏上显示预编译位图- 读取位图数据并绘制到显示屏,根据传入参数确定显示位置
运行效果
- LCD 屏幕显示

rotation.py
程序说明
- 该程序是在特定的显示屏上循环展示不同旋转值下的文本显示效果
硬件连接
- 开发板接入电脑
代码分析
main:程序主入口,初始化显示屏并循环展示不同旋转值下的文本效果- 创建显示屏对象并初始化,在循环中依次设置不同旋转值,清空屏幕后显示包含旋转值信息的文本并等待观察
tft.rotation:设置显示屏旋转角度- 根据传入参数调整显示屏显示方向置
运行效果
- LCD 屏幕显示

scroll.py
程序说明
- 该程序是在特定的显示屏上实现字符的平滑滚动显示
硬件连接
- 开发板接入电脑
代码分析
main:程序主入口,初始化显示屏、设置颜色并滚动显示字符- 创建显示屏对象,设置颜色生成器获取前景色,初始化显示屏后设置滚动区域,在循环中清除顶部行、在新行显示字符并更新颜色和字符值,通过设置滚动地址实现滚动并控制速度
cycle:创建可循环迭代对象- 接受参数,若可迭代则直接循环,若单个元素则转换为可迭代列表并循环返回
运行效果
- LCD 屏幕显示
