ESP32-S3-devKitC-1 板上自带了一个RGB LED,型号为 WS2812。
RGB LED 在板上的位置如下图所示。
为了点亮这个WS2812,需要确定这颗RGB LED连接到哪个GPIO上了。
下面是确定GPIO管脚的过程:
1、根据原理图
2、根据PCB布局图:
程序使用了 zorxx/neopixel 这个组件,所以需要运行组件添加命令:
idf.py add-dependency "zorxx/neopixel^1.0.10"
组件添加完成后,需要重新选一下芯片才可以下载添加的组件到项目中。
完整的代码:
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include "esp_log.h"
#include "driver/gpio.h"
#include "neopixel.h"#define TAG "RGB-WS2812"
#define LED_COUNT 1
#define LED_PIN GPIO_NUM_48
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))void app_main(void)
{uint32_t times = 100000; //显示的次数tNeopixelContext neopixel = neopixel_Init(LED_COUNT, LED_PIN);tNeopixel pixel[] ={{ 0, NP_RGB(50, 0, 0) }, /* 红色 */{ 0, NP_RGB(0, 50, 0) }, /* 绿色 */{ 0, NP_RGB(0, 0, 50) }, /* 蓝色 */{ 0, NP_RGB(0, 0, 0) }, /* 关闭 */};ESP_LOGI(TAG, "[%s] Starting", __func__);for(int iter = 0; iter < times; ++iter){for(int i = 0; i < ARRAY_SIZE(pixel); ++i){neopixel_SetPixel(neopixel, &pixel[i], 1);vTaskDelay(pdMS_TO_TICKS(200)); //延时,此时显示红、绿、蓝、关闭中的一种}}ESP_LOGI(TAG, "[%s] Finished", __func__);
}
这时候,即使编译成功,烧制完成,RGB LED灯也不会亮。
还差一步!
使用杜邦线把RGB下面的连接点短接,接通R17和GPIO48管脚的线路,结果展示: