OLED显示GIF图片(可直接生成Arduino代码)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9165|回复: 17

OLED显示GIF图片(可直接生成Arduino代码)

[复制链接]
发表于 2021-7-30 14:37 | 显示全部楼层 |阅读模式
本帖最后由 王尼玛1 于 2021-9-7 17:59 编辑

首先欣赏一下音乐

一.前言
  如果要让OLED显示静态图片,需要将原图转为BMP格式,然后再用图片取模软件进行取模,生成16进制代码。但如果要显示GIF动图,需要将GIF图片的每一帧都保存下来,然后再将每张图片都转为BMP格式,再进行取模,而常用的图片取模软件都是只能一张一张的取模(至少我没找到可以批量取模的),这就太麻烦了.于是闲暇之余开发了一个小程序,目前只适用于0.96寸的OLED
二.软件使用
1.在这里获取: https://gitee.com/yym001/oled-display-gif (有源文件和打包好的exe可执行文件)
2.打开软件,选择一张GIF图片,这个网站有很多素材:https://icons8.com/free-animated-icons

1.png


3.接着点击分割GIF,将会再相同目下创建一个 FUCK 文件夹,此文件夹里面即是GIF图片的每一帧
2.png


4.选择此文件夹
3.png

5.然后再当前目录下新建一个文件夹,用来保存格式转换后的图片(BMP格式),选择输出文件夹
   4.png


6.点击开始转换,提示转换成功。再点击 重置图片大小,由于原图大小是200x200,而OLED的分辨率位 128x64 明显显示不下,需要缩小图片。目前强制转化为48x48

   5.png

7.如果你是再我上面提供的网站下载的图片,需要勾选01翻转选项,再点击 输出16进制数组。会在你新建的文件夹里创建一个 fuck.h, 此文件即为每张BMP图的取模数据

   6.png

8.我这里以 Adafruit_SSD1306 为例,如果你用的是 u8g2 ,则选择 u8g2 选项,同时需要选中 字节倒叙,再点击生成 Arduino 代码,会生成一个txt文本文档.

   7.png
9.打开这个txt文件,里面即是Arduino 代码。接下只需要复制到Arduino IDE 中即可,当然需要把生成的 fuck.h 文件复制到Arduino 程序的相同子目录,否则会报错无法 找到这个文件
8.png


10.最后效果
22.gif

三.注意事项
  1.确保你已经有Adafruit_SSD1306 库文件和 u8g2库文件
   2. 由于GIF 的是有很多帧图片构成从的。因此非常占内存,可用Arduino 2560 或,ESP8266,ESP32等内存较大的单片机


四.做一个OLED显示天气
效果演示:
123.gif




教程说明:https://gitee.com/yym001/esp32oledweather/blob/master/README.md




发表于 2021-7-31 14:18 | 显示全部楼层
名为F***的文件夹可太生草了
 楼主| 发表于 2021-8-1 15:52 | 显示全部楼层
frankhan747 发表于 2021-7-31 14:18
名为F***的文件夹可太生草了

哈哈哈哈哈哈哈哈哈哈哈哈
发表于 2021-8-27 15:53 | 显示全部楼层
连接失效了 能再发下吗
 楼主| 发表于 2021-8-27 20:51 | 显示全部楼层
Specher 发表于 2021-8-27 15:53
连接失效了 能再发下吗

没有失效呀,能打开的
发表于 2021-8-29 17:38 | 显示全部楼层
可以下载了 很好用 谢谢分享
 楼主| 发表于 2021-8-30 10:46 | 显示全部楼层
Specher 发表于 2021-8-29 17:38
可以下载了 很好用 谢谢分享

这个有BUG的,生成的图片顺序会乱导致最后显示的时候会不流畅,现已修复,并且增加了一些功能
发表于 2021-9-7 13:46 | 显示全部楼层
感谢分享,太厉害了
发表于 2022-1-8 10:19 | 显示全部楼层
为什么我的笑脸是这个样子的啊,大佬求解
12.jpg
 楼主| 发表于 2022-1-8 12:41 | 显示全部楼层
TDL_KING 发表于 2022-1-8 10:19
为什么我的笑脸是这个样子的啊,大佬求解

上下左右都反了,试下01反转选项(选中和不选中都试一下)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:25 , Processed in 0.332790 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表