#include <SPIFFS.h>
#include <Arduino.h>
#include <TFT_eSPI.h>
#include "src/WIFILedManager.h"
#include <TJpg_Decoder.h>
#define BOOT_BUTTON_PIN 0
WIFILedManager ledManager(48, 1);
TFT_eSPI tft = TFT_eSPI();
void listSPIFFSFiles() {
File root = SPIFFS.open("/");
if (!root) {
Serial.println("无法打开根目录");
return;
}
Serial.println("SPIFFS 文件列表:");
File file = root.openNextFile();
while (file) {
Serial.printf(" %s (%d Bytes)\n", file.name(), file.size());
file = root.openNextFile();
}
root.close();
}
// TFT渲染回调函数(必须实现)
bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t *bitmap) {
tft.pushImage(x, y, w, h, bitmap); // 将解码后的像素块推送到屏幕
return true; // 返回true表示渲染成功
}
void setup() {
Serial.begin(115200);
Serial.println("开始启动");
Serial.println("初始化按钮引脚...");
pinMode(BOOT_BUTTON_PIN, INPUT_PULLUP);
Serial.println("初始化屏幕...");
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
digitalWrite(TFT_BL, HIGH);
Serial.println("屏幕初始化完成");
Serial.println("初始化 LED 管理器...");
ledManager.begin();
Serial.println("挂载 SPIFFS...");
if (!SPIFFS.begin()) {
Serial.println("SPIFFS Mount Failed");
return;
}
Serial.println("SPIFFS 挂载成功");
listSPIFFSFiles();
bool exist = SPIFFS.exists("/test.jpg");
if (exist) {
Serial.println("The file exists!");
} else {
Serial.println("No such file found.");
}
// 设置TJpgDec
TJpgDec.setJpgScale(1); // 缩放比例(1:1)
TJpgDec.setSwapBytes(true); // 交换颜色字节序(适配TFT_eSPI)
TJpgDec.setCallback(tft_output); // 绑定渲染回调函数
// 显示图片(全屏居中)
TJpgDec.drawFsJpg(0, 0, "/test.jpg");
}
void loop() {
static unsigned long pressStart = 0;
static bool resetFlag = false;
// 按钮检测
if (digitalRead(BOOT_BUTTON_PIN) == LOW) {
if (!resetFlag) {
pressStart = millis();
resetFlag = true;
}
if (millis() - pressStart > 3000) {
ledManager.resetSettings();
}
} else {
resetFlag = false;
}
// 更新网络状态
ledManager.update();
delay(100);
}
最后修改:2025 年 06 月 04 日 11 : 12 PM
© 允许规范转载