如何使用图像作为字节数组与TFT_eSPI
扫描二维码
随时随地手机看文章
在几秒钟内将任何PNG/JPG转换为任何格式的RGB字节数组-使用免费的图像到字节数组转换器来提升您的TFT_eSPI图形!
在基于ILI9341的TFT显示器上添加自定义图形——徽标、图标、精灵——比您想象的要简单。通过将图像转换为16位RGB字节数组并将其存储在闪存中,您可以使用TFT_eSPI库立即绘制图像,而不需要SD卡或外部文件系统。这个工作流程的关键是Arduino TFT显示器的RGB图像到字节数组转换器,这是一个免费的在线工具,可自动完成整个转换过程。
为什么RGB图像到字节数组转换器很重要
这个转换器改变了游戏规则,因为它:
•消除手动步骤。只需上传PNG或JPG,并准备粘贴uint16_t数组。
•自动处理5-6-5格式。不需要纠结于位掩码或端序。
•尊重方向和尺寸。您可以在上传时选择宽度、高度和旋转。
准备你的硬件和库
在转换图像之前,请确保:
•布线和DisplayILI9341 TFT通过SPI连接到ESP32(或类似)。MOSI, MISO, SCLK, CS, DC, RST和可选的BLK引脚在User_Setup.h中连接和定义。
•安装TFT_eSPIClone或通过库管理器安装。编辑User_Setup.h以匹配您的输出并启用ILI9341。
准备好硬件和库之后,您就可以专注于图形了。
转换你的图像在三次点击
在浏览器中打开RGB图像转换器。
•上传和配置点击选择文件并选择您的图像。输入所需的宽度和高度像素。(可选)勾选旋转90°/180°,如果需要。
生成CodeHit转换。几秒钟后,你就会看到一段c++代码:
复制这个,你就完成了——不需要手动编辑!
在草图中嵌入字节数组
将生成的数组粘贴到草图的顶部:
程序将数组保存在闪存中,保留宝贵的RAM。
LOGO_WIDTH和LOGO_HEIGHT宏允许您稍后轻松引用尺寸。
初始化TFT并显示图像
在setup()你的Arduino草图:
pushImage(x, y, w, h, data)从flash中读取5-6-5像素数据并渲染。
高级提示和技巧
•内存管理大的图像会消耗大量的闪存——请检查ESP32的可用闪存。对于多个映像,可以考虑使用RLE进行压缩,然后动态地进行解压缩。
•Animation将每个帧转换为一个单独的数组,然后使用pushImage()循环遍历它们。平衡帧大小和帧数以适应闪光限制。
•如果颜色出现反转,使用tft.setSwapBytes(true)。结合tft.pushPixels()进行部分更新或覆盖。
本文编译自hackster.io