上篇文章: 玩转RP2040之LCD绘制基本形状测试,介绍了使用MicroPython在RP2040的LCD进行基本的图形绘制,包括像素点绘制、直线绘制、矩形绘制等。但对于图片的绘制,好像没有很好的支持。
在网上找到一个使用MicroPython在gc9a01的LCD显示图片的例子,已经编译好了LCD驱动的固件,可以直接使用,也可以自己再修改编译,比较不错,项目链接地址:
1 更换Python固件
要使用MicroPython以及此项目中的函数接口进行LCD上的图片显示,需要先给RP2040更换为这里的固件,更换方法和之前介绍的一样,就是按住BOOT和RESET重启,安装BOOT不发后弹出文件夹,把下面的固件拖进去即可,固件烧录的具体流程可参考之前的文章:
2 修改引脚定义
然后就可以使用项目中的测试程序进行图片显示测试了,再测试之前,需要改下引脚定义,因为下载的这个项目所用的板子的LCD引脚定义和RP2040的是不一样的,可以参考微雪LCD基础例程中的引脚定义的写法,进行对应的修改,修改的代码如下,jpg.py程序:
import gc
import time
from machine import Pin, SPI
import gc9a01
DC = 8
CS = 9
SCK = 10
MOSI = 11
RST = 12
BL = 25
gc.enable()
gc.collect()
def main():
'''
Decode and draw jpg on display
'''
spi = SPI(1, baudrate=60000000, sck=Pin(SCK), mosi=Pin(MOSI))
tft = gc9a01.GC9A01(
spi,
240,
240,
reset=Pin(RST, Pin.OUT),
cs=Pin(CS, Pin.OUT),
dc=Pin(DC, Pin.OUT),
backlight=Pin(BL, Pin.OUT),
rotation=0)
# enable display and clear screen
tft.init()
# cycle thru jpg's
while True:
for image in ["bigbuckbunny.jpg", "bluemarble.jpg"]:
tft.jpg(image, 0, 0, gc9a01.SLOW)
time.sleep(5)
main()
可以看到,有了LCD编译库的加持,应用代码变得十分简洁,在指定了LCD的引脚并进行初始化之后,只需要指定要显示的jpg图片,即可实现图片的显示,图片也不需要再额外的编码转换。
3 图片文件放到板子中
在测试之前,还要将要显示的jpg图片和程序放到RP2040板子中,对应py文件,之前的文章( 玩转RP2040之Python开发环境搭建)介绍过一种方式是:在电脑上通过Thonny打开py文件,然后串口连接到板子,再点文件另存为,选择存到板子中即可。
那对于jpg图片,怎么保存到板子中呢?这里再介绍另外一种文件复制的方法,使用ampy工具。
3.1 安装ampy工作
自己的Windows电脑上需要有python的开发环境,然后使用pip指令安装adafruit-ampy这个工具
pip install adafruit-ampy
安装完成之后,可以输入ampy指令确认是否安装成功:
这里主要用到的是put这个指令,用来将电脑中的文件发送到RP2040板子中。
3.2 使用apmy指令传输文件
在要上传的文件的目录下按住shift键并右击目录,选择“此次打开powershell窗口”。
比如此次要上传的jpg图片在examples/RP2/jpg目录下,就在jpg文件夹上按住shift键并右击。
使用ls指令可以查看jpg目录下的文件,然后使用下面的指令进行文件推送
ampy --port COM31 put alien.jpg
需注意的是:在执行此指令时,板子串口要连接到电脑,但串口不能再连接到其它软件,如果连接到了Thonny,要断开Thonny与板子的连接关系
文件发送成功的示意结果如下:
发送成功后,可以再示意Thonny连接板子,通过打开文件,打开板子文件,来确认图片是否已经在板子中了。
4 运行测试
程序和图片都放到板子中后,就可以测试了,由于我的板子在上篇文章测试LCD画基本元素时,放入了一个main.py的程序,所以开机默认会运行那个程序,在不删除那个程序的情况下,用Thonny打开板子中的jpg.py图片测试程序,点击Thonny中的运行,也是可以运行的,测试效果图如下:
5 总结
本篇介绍了使用MicroPython在RP2040上进行LCD全屏图片的显示测试,通过更换已编译好的LCD驱动的python固件,然后将要显示的jpg文件通过ampy放到板子中,修改测试程序的引脚定义,即可实现LCD上图片的显示。