ESP32 LED 閃爍使用原廠 SDK 和 Task


簡介

使用 ESP32 和原廠 SDK(ESP-IDF)來讓 LED 閃爍,可以利用 FreeRTOS 的任務(Task)來實現。

安裝 VSCode 和 ESP-IDF VSCode 擴展

確保你已經安裝和配置好了 ESP-IDF 開發環境。您也可以參考 ESP32 入門到精通 – 在 VSCode 安裝 ESP-IDF 插件 這篇文章。

ESP32 DevKit 開發模組

選擇一個 ESP32 模組如 ESP32 DevKitC V4

材料準備並連接 LED

1. 選擇一顆適合的 LED,例如紅色、綠色或藍色 LED。
2. 建議使用限流電阻來限制 LED 的電流,以保護 ESP32 的 GPIO 引腳。
3. 將 LED 的陽腳(通常是較長的那根腳)連接到選擇的 GPIO 引腳(如 GPIO2)。
4. 將 LED 的陰腳(通常是較短的那根腳)連接到地(GND)。

新建 ESP32 專案

利用在 VSCode 的 IDF 插件來新建一個 ESP32 專案可參考 ESP32 入門到精通 – 如何用 VSCode 創建 ESP32 專案

編寫代碼

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"

// LED GPIO 定義
#define BLINK_GPIO 2

// 閃爍任務
void blink_task(void *pvParameter)
{
    while (1)
    {
        // LED ON
        gpio_set_level(BLINK_GPIO, 1);
        printf("LED ON\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);

        // LED OFF
        gpio_set_level(BLINK_GPIO, 0);
        printf("LED OFF\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

void app_main(void)
{
    // 配置 GPIO
    gpio_pad_select_gpio(BLINK_GPIO);
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);

    // 創建閃爍任務
    xTaskCreate(&blink_task, "blink_task", 1024, NULL, 5, NULL);
}

編譯和燒錄

在 VSCode 中找到 "ESP32-IDF : Build, Flash and Monitor" ICON 執行和燒錄。

查看結果

我們可以查看 LED 的閃爍或查看終端機的列印結果,會每隔一秒看到一次變化,如下...
LED ON
LED OFF
LED ON
LED OFF
...

結論

通過以上步驟和方法,就能夠使用 VSCode 來開發 ESP32 的應用程式,並實現 LED 閃爍的功能。如果有任何錯誤,請檢查 ESP-IDF 和 VSCode 等的配置,確保路徑和環境變量都設置正確。