跳到主要内容

MicroPython

本章节包含以下部分,请按需阅读:

MicroPython 入门教程

初次接触 ESP32 MicroPython 开发,想要快速上手?我们为您准备了一套通用的 ESP32 MicroPython 入门教程

配置开发环境

1. 烧录 MicroPython 固件和配置 Thonny

请参考 搭建 MicroPython 开发环境教程 烧录 MicroPython 固件。

2. 其他提示

示例程序

示例程序基础例程说明
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/", 进行下载

    ESP32-S3-Touch-LCD-1.28_Thonny_use-07

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

    ESP32-S3-Touch-LCD-1.28_Thonny_use-07

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

    ESP32-S3-Touch-LCD-1.28_Thonny_use-08

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

    ESP32-S3-Touch-LCD-1.28_Thonny_use-09

特殊例程

在所给例程中,bluenarble.py、cst816.py、cst816_example.py 这几个文件较为特别。请将下面几点全部看完之后,再尝试自行烧录。

  • bluenarble.py 存放的是图片,cst816.py 存的是触控板实现操作的函数,运行无现象

    ESP32-S3-Touch-LCD-1.28_Thonny_use-11

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

    ESP32-S3-Touch-LCD-1.28_Thonny_use-12

alien.py

程序说明

  • 该程序用于在特定显示屏上随机显示 “alien.jpg” 图像

硬件连接

  • 开发板接入电脑

    ESP32-S3-Touch-LCD-1.28_Arduino_demo_1

代码分析

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

运行效果

  • LCD 屏幕显示

    ESP32-S3-Touch-LCD-1.28_Thonny_demo-alien-01

bitarray.py

程序说明

  • 该程序是在特定显示屏上创建并展示多个随机位置的 “吃豆人” 精灵动画

硬件连接

  • 开发板接入电脑

代码分析

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

运行效果

  • LCD 屏幕显示

    ESP32-S3-Touch-LCD-1.28_Thonny_demo-alien-01

hello.py

程序说明

  • 该程序是在特定的显示屏上随机显示不同颜色的 “Hello!” 文本,并且可以通过循环切换不同的旋转角度

硬件连接

  • 开发板接入电脑

代码分析

  • tft.text :在显示屏上绘制文本 “Hello!”
    • 使用指定字体,文本位置通过随机数在显示屏范围内确定,前景色和背景色由随机生成的 RGB565 颜色值决定
  • while True :实现 “Hello!” 文本在不同旋转角度下的随机显示动态效果
    • 通过无限循环和遍历四个旋转角度,设置显示屏旋转角度后清空屏幕,计算文本显示范围,循环调用 tft.text 函数在随机位置以随机颜色显示文本

运行效果

  • LCD 屏幕显示

    ESP32-S3-Touch-LCD-1.28_Thonny_demo-alien-01

hershey.py

程序说明

  • 该程序是在一个特定的显示屏上循环展示不同的问候语

硬件连接

  • 开发板接入电脑

代码分析

  • main :函数中的循环部分,在显示屏上循环显示不同字体、颜色和问候语
    • 逐行移动显示位置,获取下一个颜色、字体和问候语,清除上一行内容并绘制新内容,当超出一定范围时重置行位置,添加延迟控制显示速度
  • cycle :创建可循环迭代的对象
    • 接受参数,若可迭代则直接循环,若单个元素则转换为可迭代列表并循环返回,用于方便地循环使用颜色、字体和问候语列表

运行效果

  • LCD 屏幕显示

    ESP32-S3-Touch-LCD-1.28_Thonny_demo-alien-01

jpg.py

程序说明

  • 该程序是在特定的显示屏上轮流显示两张 JPEG 图片

硬件连接

  • 开发板接入电脑

代码分析

  • main :函数中的循环部分,在显示屏上循环显示不同字体、颜色和问候语
    • 遍历图片文件名列表,调用 tft.jpg 函数在特定位置以较慢方式显示图片,然后等待 5 秒
  • tft.jpg :在显示屏上显示指定的 JPEG 图片
    • 读取、解码图片文件并绘制到显示屏,根据传入参数确定显示位置和模式

运行效果

  • LCD 屏幕显示
    ESP32-S3-Touch-LCD-1.28_Thonny_demo-jpg-05
    ESP32-S3-Touch-LCD-1.28_Thonny_demo-pbitmap-07

noto_fonts.py

程序说明

  • 该程序是在特定的显示屏上展示三种不同字体(NotoSans、NotoSerif、NotoSansMono)的名称,并且将这些字体名称以居中的方式显示在不同的行上

硬件连接

  • 开发板接入电脑

代码分析

  • main :程序主入口,初始化显示屏并展示三种字体名称
    • 创建显示屏对象并初始化,填充背景为黑色,调用 center 函数依次显示三种字体名称
  • center :将给定字符串以指定字体在显示屏上居中显示
    • 获取显示屏宽度,计算字符串宽度,若小于屏宽则水平居中计算坐标,否则左对齐,最后在指定位置显示字符串

运行效果

  • LCD 屏幕显示
    ESP32-S3-Touch-LCD-1.28_Thonny_demo-noto-fonts-06

pbitmap.py

程序说明

  • 该程序是在特定的显示屏上显示一个预编译的位图图像

硬件连接

  • 开发板接入电脑

代码分析

  • main :程序主入口,初始化显示屏并显示位图
    • 创建显示屏对象,初始化后填充黑色背景,调用 tft.pbitmap 显示预编译位图模块中的图像
  • tft.pbitmap:在显示屏上显示预编译位图
    • 读取位图数据并绘制到显示屏,根据传入参数确定显示位置

运行效果

  • LCD 屏幕显示
    ESP32-S3-Touch-LCD-1.28_Thonny_demo-pbitmap-07

rotation.py

程序说明

  • 该程序是在特定的显示屏上循环展示不同旋转值下的文本显示效果

硬件连接

  • 开发板接入电脑

代码分析

  • main :程序主入口,初始化显示屏并循环展示不同旋转值下的文本效果
    • 创建显示屏对象并初始化,在循环中依次设置不同旋转值,清空屏幕后显示包含旋转值信息的文本并等待观察
  • tft.rotation:设置显示屏旋转角度
    • 根据传入参数调整显示屏显示方向置

运行效果

  • LCD 屏幕显示
    ESP32-S3-Touch-LCD-1.28_Thonny_demo-rotation-08

scroll.py

程序说明

  • 该程序是在特定的显示屏上实现字符的平滑滚动显示

硬件连接

  • 开发板接入电脑

代码分析

  • main :程序主入口,初始化显示屏、设置颜色并滚动显示字符
  • 创建显示屏对象,设置颜色生成器获取前景色,初始化显示屏后设置滚动区域,在循环中清除顶部行、在新行显示字符并更新颜色和字符值,通过设置滚动地址实现滚动并控制速度
  • cycle:创建可循环迭代对象
  • 接受参数,若可迭代则直接循环,若单个元素则转换为可迭代列表并循环返回

运行效果

  • LCD 屏幕显示
    ESP32-S3-Touch_1.28-MP-Thonny_demo-scroll-09