日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

零知派【ESP32教程】Web網(wǎng)頁控制彩色LED

零知實驗室 ? 來源:PCB56242069 ? 作者:PCB56242069 ? 2026-05-11 20:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?? ?零知派(零知開源)是一個專為電子初學者/電子興趣愛好者設計的開源軟硬件平臺,在硬件上提供超高性價比STM32系列開發(fā)板、物聯(lián)網(wǎng)控制板。取消了Bootloader程序燒錄,讓開發(fā)重心從“配置環(huán)境”轉移到“創(chuàng)意實現(xiàn)”,極大降低了技術門檻。零知開源編程軟件,內(nèi)置上千個覆蓋多場景的示例代碼,支持項目源碼一鍵下載,項目文章在線瀏覽。零知派(零知開源)平臺通過軟硬件協(xié)同創(chuàng)新,讓你的創(chuàng)意快速轉化為實物,來動手試試吧!

?訪問零知實驗室,獲取更多實戰(zhàn)項目和教程資源吧!

www.lingzhilab.com

本教程將教你使用ESP32 搭建 Web 服務器,通過網(wǎng)頁端顏色選擇器實時、無刷新控制 RGB LED 燈的顏色,操作簡單、響應流暢,手機 / 電腦瀏覽器均可使用。

一、軟件和硬件

硬件清單

零知派 - ESP32 開發(fā)板

RGB 全彩 LED 模塊(帶限流電阻,3.3V/5V 通用,高電平點亮)

軟件工具

零知派開發(fā)工具

硬件接線

RGB LED 引腳 ESP32 GPIO 引腳
紅色引腳 GPIO25
綠色引腳 GPIO26
藍色引腳 GPIO27

wKgZPGoBzw2AfuSzAAdQhgOugkE751.png

二、完整代碼與使用說明

將代碼中ssid(WiFi 名稱)和password(WiFi 密碼)修改為你自己的 WiFi 信息,其他代碼無需改動。

/**************************************************************************************
 * 文件: LED.ino
 * 作者:零知派(深圳市在芯間科技有限公司)
 * -^^- 零知派,讓電子制作變得更簡單! -^^-
 * 時間: 2026-5-8 15:36:27
 * 說明: 
 * 功能:
***************************************************************************************/
#include 

// 網(wǎng)絡憑據(jù)
const char* ssid     = "你的WiFi名稱";
const char* password = "你的WiFi密碼";

// Web服務器
WiFiServer server(80);

// 引腳定義
const int redPin = 25;
const int greenPin = 26;
const int bluePin = 27;

// PWM 配置
const int freq = 5000;
const int resolution = 8;

// HTML 網(wǎng)頁(修復亂碼和顏色預覽問題)
const char index_html[] PROGMEM = R"rawliteral(



    
    
    
    
    
        body { padding: 20px; }
        .container { max-width: 600px; margin: 0 auto; }
        .color-preview { 
            width: 100%; 
            height: 100px; 
            margin: 20px 0;
            border: 2px solid #ddd;
            border-radius: 5px;
            background-color: #000;
        }
        #colorPicker {
            width: 100%;
            height: 50px;
            border: 1px solid #ddd;
            border-radius: 5px;
            cursor: pointer;
        }
        .rgb-value {
            margin-top: 10px;
            padding: 10px;
            background-color: #f5f5f5;
            border-radius: 5px;
            text-align: center;
            font-family: monospace;
            font-size: 16px;
        }
        .status {
            margin-top: 10px;
            padding: 10px;
            text-align: center;
            font-size: 14px;
            border-radius: 5px;
        }
        .status.success {
            background-color: #d4edda;
            color: #155724;
        }
    


    
        
            
                ESP32 顏色選擇器
            
        
        
            
                
            
        
        
            
                
            
        
        
            
                RGB: 0, 0, 0
            
        
        
            
                
            
        
    
    
    
        var colorPicker = document.getElementById('colorPicker');
        var previewDiv = document.getElementById('colorPreview');
        var rgbDiv = document.getElementById('rgbValue');
        var statusDiv = document.getElementById('status');
        
        // 發(fā)送顏色到ESP32
        function sendColor(r, g, b) {
            var url = '/?r' + r + 'g' + g + 'b' + b + '&';
            
            fetch(url)
                .then(function(response) {
                    // 顯示成功狀態(tài)
                    statusDiv.style.display = 'block';
                    statusDiv.className = 'status success';
                    statusDiv.innerHTML = '? 顏色已更新: RGB(' + r + ', ' + g + ', ' + b + ')';
                    
                    // 2秒后隱藏狀態(tài)
                    setTimeout(function() {
                        statusDiv.style.display = 'none';
                    }, 1000);
                })
                .catch(function(error) {
                    console.log('發(fā)送失敗: ' + error);
                    statusDiv.style.display = 'block';
                    statusDiv.className = 'status';
                    statusDiv.style.backgroundColor = '#f8d7da';
                    statusDiv.style.color = '#721c24';
                    statusDiv.innerHTML = '? 發(fā)送失敗';
                    setTimeout(function() {
                        statusDiv.style.display = 'none';
                    }, 1000);
                });
        }
        
        // 實時更新預覽并發(fā)送顏色(無需點擊按鈕)
        colorPicker.addEventListener('input', function() {
            var hex = this.value;
            
            // 更新預覽
            previewDiv.style.backgroundColor = hex;
            
            // 轉換HEX到RGB
            var r = parseInt(hex.substr(1, 2), 16);
            var g = parseInt(hex.substr(3, 2), 16);
            var b = parseInt(hex.substr(5, 2), 16);
            
            // 顯示RGB值
            rgbDiv.innerHTML = 'RGB: ' + r + ', ' + g + ', ' + b;
            
            // 自動發(fā)送顏色到ESP32
            sendColor(r, g, b);
        });
        
        // 初始化:發(fā)送初始顏色
        var initialHex = colorPicker.value;
        var initialR = parseInt(initialHex.substr(1, 2), 16);
        var initialG = parseInt(initialHex.substr(3, 2), 16);
        var initialB = parseInt(initialHex.substr(5, 2), 16);
        sendColor(initialR, initialG, initialB);
    


)rawliteral";

const long timeoutTime = 2000;

// 初始化 PWM 功能
void setupPWM() {
    Serial.println("正在初始化 PWM...");
    
    // 檢查 ledcAttach 是否可用
    if (ledcAttach(redPin, freq, resolution)) {
        Serial.println("紅色引腳 PWM 初始化成功");
    } else {
        Serial.println("紅色引腳 PWM 初始化失敗");
    }
    
    if (ledcAttach(greenPin, freq, resolution)) {
        Serial.println("綠色引腳 PWM 初始化成功");
    } else {
        Serial.println("綠色引腳 PWM 初始化失敗");
    }
    
    if (ledcAttach(bluePin, freq, resolution)) {
        Serial.println("藍色引腳 PWM 初始化成功");
    } else {
        Serial.println("藍色引腳 PWM 初始化失敗");
    }
}

// 連接 WiFi
void connectWiFi() {
    Serial.println("n=================================");
    Serial.print("正在連接到 WiFi: ");
    Serial.println(ssid);
    
    WiFi.begin(ssid, password);
    
    int attempts = 0;
    while (WiFi.status() != WL_CONNECTED && attempts < 30) {  // 增加嘗試次數(shù)到30
        delay(500);
        Serial.print(".");
        attempts++;
        
        // 每5秒顯示一次狀態(tài)
        if (attempts % 10 == 0) {
            Serial.println();
            Serial.print("仍在嘗試連接... 已嘗試 ");
            Serial.print(attempts);
            Serial.println(" 次");
        }
    }
    
    Serial.println();  // 換行
    
    if (WiFi.status() == WL_CONNECTED) {
        Serial.println("? WiFi 連接成功!");
        Serial.print("IP 地址: ");
        Serial.println(WiFi.localIP());
        Serial.println("=================================");
        Serial.println("n★ 請在瀏覽器中輸入以上 IP 地址 ★");
        Serial.println("例如: http://" + WiFi.localIP().toString());
        Serial.println("=================================n");
    } else {
        Serial.println("? WiFi 連接失??!");
        Serial.print("錯誤代碼: ");
        Serial.println(WiFi.status());
        Serial.println("請檢查:");
        Serial.println("1. WiFi 密碼是否正確");
        Serial.println("2. WiFi 名稱是否正確(注意大小寫)");
        Serial.println("3. ESP32 是否在信號范圍內(nèi)");
    }
}

// 設置 RGB 顏色值
void setColor(int red, int green, int blue) {
    ledcWrite(redPin, red);
    ledcWrite(greenPin, green);
    ledcWrite(bluePin, blue);
}

// 解析 HTTP 請求
bool parseColorRequest(String header, int& red, int& green, int& blue) {
    int rPos = header.indexOf("/?r");
    if (rPos == -1) return false;
    
    int gPos = header.indexOf('g', rPos);
    int bPos = header.indexOf('b', gPos);
    int endPos = header.indexOf('&', bPos);
    
    if (gPos == -1 || bPos == -1 || endPos == -1) return false;
    
    red = header.substring(rPos + 3, gPos).toInt();
    green = header.substring(gPos + 1, bPos).toInt();
    blue = header.substring(bPos + 1, endPos).toInt();
    
    red = constrain(red, 0, 255);
    green = constrain(green, 0, 255);
    blue = constrain(blue, 0, 255);
    
    return true;
}

// 處理客戶端請求
void handleClient(WiFiClient& client) {
    unsigned long currentTime = millis();
    unsigned long previousTime = currentTime;
    String header = "";
    String currentLine = "";
    
    while (client.connected() && currentTime - previousTime <= timeoutTime) {
        currentTime = millis();
        
        if (client.available()) {
            char c = client.read();
            header += c;
            
            if (c == 'n') {
                if (currentLine.length() == 0) {
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-type:text/html;charset=utf-8");
                    client.println("Connection: close");
                    client.println();
                    client.print(index_html);
                    
                    int red, green, blue;
                    if (parseColorRequest(header, red, green, blue)) {
                        setColor(red, green, blue);
                        Serial.printf("顏色已設置為 紅:%d 綠:%d 藍:%dn", red, green, blue);
                    }
                    
                    client.println();
                    break;
                } else {
                    currentLine = "";
                }
            } else if (c != 'r') {
                currentLine += c;
            }
        }
    }
}

// 初始化
void setup() {
    Serial.begin(115200);
    delay(1000);  // 等待串口就緒
    
    Serial.println("nn=================================");
    Serial.println("ESP32 RGB LED 控制器啟動中...");
    Serial.println("=================================");
    
    setupPWM();
    connectWiFi();
    server.begin();
    
    Serial.println("HTTP 服務器已啟動");
    
    // 初始化為關閉狀態(tài)
    setColor(0, 0, 0);
    
    // 如果 WiFi 連接成功,閃爍 LED 提示
    if (WiFi.status() == WL_CONNECTED) {
        for (int i = 0; i < 3; i++) {
            setColor(255, 255, 255);  // 白光
            delay(200);
            setColor(0, 0, 0);        // 關閉
            delay(200);
        }
    }
}

// 主循環(huán)
void loop() {
    WiFiClient client = server.available();
    
    if (client) {
        Serial.println("新客戶端已連接");
        handleClient(client);
        client.stop();
        Serial.println("客戶端已斷開");
    }
}
/******************************************************************************
 * 深圳市在芯間科技有限公司
 * 淘寶店鋪:在芯間科技零知板
 * 店鋪網(wǎng)址:https://shop533070398.taobao.com
 * 版權說明:
 *  1.本代碼的版權歸【深圳市在芯間科技有限公司】所有,僅限個人非商業(yè)性學習使用。
 *  2.嚴禁將本代碼或其衍生版本用于任何商業(yè)用途(包括但不限于產(chǎn)品開發(fā)、付費服務、企業(yè)內(nèi)部使用等)。
 *  3.任何商業(yè)用途均需事先獲得【深圳市在芯間科技有限公司】的書面授權,未經(jīng)授權的商業(yè)使用行為將被視為侵權。
******************************************************************************/
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

三、上傳與使用步驟

新建工程:打開零知派開發(fā)工具,新建一個空白工程。

粘貼代碼:將上方完整代碼復制到工程中,修改 WiFi 名稱和密碼。

選擇開發(fā)板:在軟件右側開發(fā)板列表中,選擇ESP32

編譯上傳:點擊「驗證」→「上傳」,將程序燒錄到 ESP32 開發(fā)板。

查看服務器地址:打開軟件串口調(diào)試窗口,等待 WiFi 連接成功,復制打印的IP 地址(如:192.168.3.165)。

網(wǎng)頁控制:用手機 / 電腦瀏覽器(需和 ESP32 連接同一個 WiFi),輸入復制的 IP 地址,打開控制頁面。

實時調(diào)色:點擊顏色選擇器,無需刷新頁面、無需點擊按鈕,LED 會實時同步你選擇的顏色,同時頁面顯示當前 RGB 數(shù)值和操作狀態(tài)。

wKgZO2oBzy6AUacUAADvsNieZQg258.png

wKgZO2oB0AGAXNxnAABxZNz_uHI973.png

四、功能亮點

無刷新實時控制:選擇顏色的瞬間,LED 立即變色,操作流暢無延遲。

可視化操作:網(wǎng)頁自帶顏色預覽框、RGB 數(shù)值顯示、操作成功 / 失敗提示。

自適應界面:手機、電腦瀏覽器均可完美適配,操作簡單。

安全穩(wěn)定:PWM 軟件調(diào)光,保護 LED 不被燒壞,WiFi 連接穩(wěn)定。

狀態(tài)提示:串口打印連接日志、網(wǎng)頁實時提示操作結果。

五、常見問題排查

WiFi 連接失敗:檢查 WiFi 名稱 / 密碼是否正確、ESP32 是否在 WiFi 信號范圍內(nèi)。

網(wǎng)頁打不開:確保手機 / 電腦和 ESP32 連接同一個 WiFi,IP 地址輸入無誤。

LED 不亮:檢查接線是否對應(紅 25、綠 26、藍 27),確認 RGB 模塊是高電平點亮。

顏色異常:檢查引腳接線是否松動,PWM 初始化是否正常(查看串口日志)。

總結

核心原理:ESP32 開啟 WiFi+Web 服務器,網(wǎng)頁通過fetch無刷新發(fā)送顏色數(shù)據(jù),ESP32 解析后用 PWM 控制 RGB LED。

操作極簡:修改 WiFi 信息→上傳代碼→瀏覽器訪問 IP→實時調(diào)色,全程無需額外硬件。

擴展性強:可自行修改網(wǎng)頁樣式、添加開關、調(diào)整 PWM 參數(shù),適配更多 RGB 燈模塊。

?審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1311

    瀏覽量

    75094
  • ESP32
    +關注

    關注

    27

    文章

    1231

    瀏覽量

    22589
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ——TCS3200顏色識別傳感器模塊

    ??開源)是一個專為電子初學者/電子興趣愛好者設計的開源軟硬件平臺,在硬件上提供超高性價比STM32系列開發(fā)板、物聯(lián)網(wǎng)
    的頭像 發(fā)表于 05-13 16:26 ?531次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>派</b>——TCS3200顏色識別傳感器模塊

    ESP32——基于INA238高精度功率監(jiān)測芯片的18650鋰電池充電狀態(tài)可視化與數(shù)據(jù)導出

    型號規(guī)格數(shù)量備注 1主控板ESP32ESP-WROOM-32)1核心控制板 2電流傳感器
    發(fā)表于 05-13 10:35

    ——基于ESP32的BLE Mesh藍牙組網(wǎng)系統(tǒng)(iOS/Android APP控制

    為實物,來動手試試吧!?訪問實驗室,獲取更多實戰(zhàn)項目和教程資源吧! www.lingzhilab.com 項目概述本項目以
    發(fā)表于 04-30 17:08

    ——ESP32?S3 基于 ESP32-CAM 驅動 OV3660 攝像頭模塊開發(fā)

    轉化為實物,來動手試試吧! ?訪問實驗室,獲取更多實戰(zhàn)項目和教程資源吧! www.lingzhilab.com 項目概述 本文是一個基于 **ESP32-S3** 微控制器與
    發(fā)表于 04-02 11:01

    ESP32/ESP8266開發(fā)板單向一對多ESP-NOW無線通信

    通過ESP-NOW無線通信協(xié)議實現(xiàn)ESP32開發(fā)板向多個ESP32/ESP 8266開發(fā)板發(fā)送數(shù)據(jù)。
    的頭像 發(fā)表于 03-13 09:23 ?347次閱讀
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266開發(fā)板單向一對多<b class='flag-5'>ESP</b>-NOW無線通信

    ESP32里的AI Agent:EmbedClaw上手教程!啟明云端樂鑫代理及方案商

    EmbedClawEmbedClaw是啟明云端開源的一個可以跑在ESP32上的AIAgent項目。這個項目最有意思的地方,不是“能聊天”,而是它把幾個最容易纏在一起的模塊拆開了:LLM:現(xiàn)在接的是千
    的頭像 發(fā)表于 03-11 18:13 ?1741次閱讀
    <b class='flag-5'>ESP32</b>里的AI Agent:EmbedClaw上手教程!啟明云端樂鑫代理及方案商

    ESP32開發(fā)板創(chuàng)建同步WebServer網(wǎng)頁服務器

    ESP32 內(nèi)置了 Wi-Fi 功能,能夠作為網(wǎng)頁服務器(Web Server)向網(wǎng)絡中的其他設備提供服務。通過在 ESP32 上運行網(wǎng)頁
    的頭像 發(fā)表于 01-30 11:36 ?466次閱讀
    <b class='flag-5'>ESP32</b>開發(fā)板創(chuàng)建同步WebServer<b class='flag-5'>網(wǎng)頁</b>服務器

    ESP32和STM32哪個更容易學?

    很多人會問,ESP32和STM32到底哪個更容易學?其實這個問題有點像問自行車和汽車哪個更好開——取決于你想去哪兒,以及你享受的是過程還是結果。 ESP32更像是一個為你搭好舞臺的智能硬件平臺
    的頭像 發(fā)表于 01-15 15:53 ?501次閱讀
    <b class='flag-5'>ESP32</b>和STM32哪個更容易學?

    無需安裝!在瀏覽器里就能玩轉ESP32/ESP8266,這個神器絕了!

    使用教程)ESP32-運行網(wǎng)頁服務器(WebServer)-實用篇介紹扔掉繁瑣的桌面軟件,一個瀏覽器搞定所有ESP開發(fā)調(diào)試需求溫馨提示私信:ESPConnect即可獲取
    的頭像 發(fā)表于 01-10 10:01 ?1628次閱讀
    無需安裝!在瀏覽器里就能玩轉<b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266,這個神器絕了!

    ESP32 Wi-Fi 控制 LED 燈的原理

    在智能家居、物聯(lián)網(wǎng)設備中,用手機通過Wi-Fi控制燈光、風扇或插座,已經(jīng)非常普遍。而在嵌入式開發(fā)中,ESP32是最常用的Wi-Fi模塊之一。本文將帶你系統(tǒng)理解:ESP32是如何通過Wi-Fi實現(xiàn)遠程
    的頭像 發(fā)表于 01-09 19:04 ?654次閱讀
    <b class='flag-5'>ESP32</b> Wi-Fi <b class='flag-5'>控制</b> <b class='flag-5'>LED</b> 燈的原理

    IDE——基于ESP32與DRV8833的穩(wěn)定電機測速系統(tǒng)實現(xiàn)教程

    格黑白碼盤1安裝于電機軸接線方案表DRV8833采用5V供電確保電機驅動能力[td] ESP32 引腳連接器件器件引腳功能說明 12(MOTOR_AIN1)DRV8833AIN1電機 PWM
    發(fā)表于 12-15 16:41

    樂鑫ESP32-C6和ESP32-C61究竟該如何選擇?一文讀懂本質區(qū)別

    樂鑫科技推出的ESP32-C6和ESP32-C61均支持Wi-Fi6,但定位不同。ESP32-C6是多協(xié)議樞紐,集成Wi-Fi6、藍牙5、Zigbee和Thread,適合智能家居網(wǎng)關和Matter
    的頭像 發(fā)表于 10-28 14:17 ?2871次閱讀
    樂鑫<b class='flag-5'>ESP32</b>-C6和<b class='flag-5'>ESP32</b>-C61究竟該如何選擇?一文讀懂本質區(qū)別

    樂鑫科技ESP32-S3開發(fā)板配單色LED,竟能玩出這么多花樣!代碼開源,速來白嫖!

    從閃爍到呼吸,從流水到追逐,一文掌握所有LED特效技巧本文將帶領大家從開始,使用ESP32-S3開發(fā)板實現(xiàn)多種單色LED效果控制。無論你是
    的頭像 發(fā)表于 10-23 18:02 ?2578次閱讀
    樂鑫科技<b class='flag-5'>ESP32</b>-S3開發(fā)板配單色<b class='flag-5'>LED</b>,竟能玩出這么多花樣!代碼開源,速來白嫖!

    ESP32-運行網(wǎng)頁服務器(Web Server)-實用篇

    在前一篇文章《ESP32-運行網(wǎng)頁服務器(WebServer)-入門篇》,我們介紹了ESP32運行網(wǎng)頁服務器(WebServer)的原理,然后我們基于
    的頭像 發(fā)表于 07-28 18:05 ?4140次閱讀
    <b class='flag-5'>ESP32</b>-運行<b class='flag-5'>網(wǎng)頁</b>服務器(<b class='flag-5'>Web</b> Server)-實用篇

    ESP32開發(fā)板元件資料

    ESP32開發(fā)板元件
    發(fā)表于 07-21 14:47 ?17次下載
    临朐县| 崇州市| 香河县| 海城市| 南安市| 泉州市| 四川省| 凤冈县| 鹤山市| 高州市| 金湖县| 静宁县| 德安县| 磴口县| 普兰店市| 依安县| 获嘉县| 溧阳市| 邵阳县| 凤冈县| 山东| 辽宁省| 石棉县| 瓮安县| 旬邑县| 曲靖市| 温宿县| 西乌| 竹北市| 睢宁县| 刚察县| 黑河市| 丹棱县| 抚州市| 酒泉市| 讷河市| 南宁市| 夏津县| 屏东县| 定结县| 汉阴县|