#include #include #include const char* ssid = "SEEED-MKT"; const char* password = "edgemaker2023"; WebServer server(80); TFT_eSPI tft = TFT_eSPI(); String currentText = "Hello"; // ====== 屏幕居中显示 ====== void drawCenteredText(String text) { tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.setTextSize(3); tft.setTextDatum(MC_DATUM); tft.drawString(text, tft.width() / 2, tft.height() / 2 - 10); } // ====== 网页 UI(带输入框) ====== String getHTML() { String html = R"rawliteral( XIAO Display Control

Display Control Panel

Current: %TEXT%


)rawliteral"; html.replace("%TEXT%", currentText); return html; } // ====== 路由 ====== void handleRoot() { server.send(200, "text/html", getHTML()); } // 👉 输入框处理(核心) void handleSet() { if (server.hasArg("msg")) { currentText = server.arg("msg"); // 限制长度(防止超出屏幕) if (currentText.length() > 20) { currentText = currentText.substring(0, 20); } drawCenteredText(currentText); } server.send(200, "text/html", getHTML()); } // ====== 按钮功能 ====== void handleFu() { currentText = "FU"; drawCenteredText("FU"); server.send(200, "text/html", getHTML()); } void handleTemp() { currentText = "25C"; drawCenteredText("25C"); server.send(200, "text/html", getHTML()); } void handleHello() { currentText = "Hello"; drawCenteredText("Hello"); server.send(200, "text/html", getHTML()); } // ====== 初始化 ====== void setup() { Serial.begin(115200); tft.init(); tft.setRotation(0); drawCenteredText("Starting"); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } drawCenteredText("Connected"); Serial.println(WiFi.localIP()); // 路由绑定 server.on("/", handleRoot); server.on("/set", handleSet); server.on("/f", handleFu); server.on("/temp", handleTemp); server.on("/hello", handleHello); server.begin(); } // ====== 主循环 ====== void loop() { server.handleClient(); }