效果图
platformio.ini
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32dev]
platform = espressif32
board = esp32cam
framework = arduino
; 指定端口下载程序
upload_port = COM16
; 配置串口监视器的默认波特率115200
monitor_speed = 115200
board_build.partitions = ./user_huge_app.csv
项目结构
忽略wokwi.toml,和diagra.json,这两个文件是云开发需要的
接线图
user_huge_app.csv
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x3F0000,
spiffs, data, spiffs, 0x400000,0x0,
main
/*
实现功能:显示鸡你太美GIF图
轻玩科技,全网同号
*/
#include <Arduino.h>
#include <U8g2lib.h> //导入第三方函数库:U8g2
#include "../include/KUNKUN.h"
#include "../include/wifi_gif.h"
// 初始化U8g2库,设置显示驱动为SSD1306,分辨率为128x64,通信方式为硬件I2C
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/14, /* data=*/15);
// 定义一个常量数组,存储鸡你太美GIF图的每帧BMP数据
const uint8_t *gntmData[] = {BMP1, BMP2, BMP3, BMP4, BMP5, BMP6, BMP7, BMP8, BMP9, BMP10, BMP11, BMP12, BMP13, BMP14, BMP15, BMP16, BMP17, BMP18, BMP19, BMP20, BMP21, BMP22, BMP23, BMP24, BMP25, BMP26, BMP27, BMP28, BMP29, BMP30, BMP31, BMP32, BMP33, BMP34, BMP35, BMP36, BMP37, BMP38, BMP39, BMP40, BMP41, BMP42, BMP43, BMP44, BMP45, BMP46, BMP47, BMP48, BMP49, BMP50, BMP51, BMP52, BMP53, BMP54, BMP55};
const uint8_t *wifiData[] = {wifi_gif1, wifi_gif2, wifi_gif3, wifi_gif4, wifi_gif5, wifi_gif6, wifi_gif7, wifi_gif8, wifi_gif9, wifi_gif10, wifi_gif11, wifi_gif12, wifi_gif13, wifi_gif14, wifi_gif15, wifi_gif16, wifi_gif17, wifi_gif18, wifi_gif19, wifi_gif20, wifi_gif21, wifi_gif22, wifi_gif23, wifi_gif24, wifi_gif25, wifi_gif26};
// 当前帧索引
int currentFrame = 0;
/**
* @brief 初始化函数,设置显示设备和清空显示内容
*/
void setup()
{
Serial.begin(115200);
// 初始化U8g2库
u8g2.begin();
// 清空显示内容
u8g2.clearDisplay();
}
/**
* @brief 主循环函数,用于显示鸡你太美GIF图
*/
void loop()
{
// 清空显示缓冲区
u8g2.clearBuffer(); // 清空显示缓冲区
u8g2.setFont(u8g2_font_ncenB10_tr); // 设置字体
// u8g2.drawStr(0, 20, "Ji Ni Taimei"); // 在坐标(0, 20)处绘制文本
u8g2.sendBuffer(); // 将缓冲区的内容发送到显示设备进行显示
// 在缓冲区中绘制当前帧的BMP图像
u8g2.drawXBMP(0, 0, 128, 64, gntmData[currentFrame]);
u8g2.drawXBMP(0, 0, 48, 48, wifiData[currentFrame]);
// 将缓冲区的内容发送到显示设备进行显示
u8g2.sendBuffer();
// 延时33毫秒,控制帧率为每秒30帧
delay(25);
// 更新当前帧索引
currentFrame = (currentFrame + 1) % 26; // 假设你的GIF图有38帧
Serial.println("currentFrame =============== " + currentFrame);
}
项目源码
资源文件就不复制,自行下载即可
https://download.csdn.net/download/qq_20330595/90320529
bmp2image
bmp转c++数组,非常好用
https://javl.github.io/image2cpp/