今天为大家带来的是 安信可 ESP-12K 驱动WS2812B 灯板;
ESP-12K | WS2812B |
---|---|
5V | 5V |
Gnd | Gnd |
GPIO45 | Din |
头文件定义好对应的GPIO以及要驱动灯板的LED数量:
#define WS2812B_RMT_LED_NUMBER 24 //24个WS2812B灯珠
#define WS2812B_RMT_LED_GPIO 45 //对应的是 GPIO45
//三色循环
uint8_t nums = 2;
while (nums--)
{
ws2812_ret->set_rgb(ws2812_ret, 100, 255, 0, 0);
vTaskDelay((1000 / portTICK_RATE_MS));
ws2812_ret->set_rgb(ws2812_ret, 100, 0, 255, 0);
vTaskDelay((1000 / portTICK_RATE_MS));
ws2812_ret->set_rgb(ws2812_ret, 100, 0, 0, 255);
vTaskDelay((1000 / portTICK_RATE_MS));
}
/**
* @description: 一个一个逐渐亮起
* @param {type}
* @return:
*/
void TaskWS2812OneByOne(void *p)
{
uint8_t nums = 5;
while (nums--)
{
for (int j = 0; j < WS2812B_RMT_LED_NUMBER; j++)
{
// Build RGB values
hue = j * 360 / WS2812B_RMT_LED_NUMBER + start_rgb;
led_strip_hsv2rgb(hue, 100, 100, &red, &green, &blue);
// Write RGB values to strip driver
ESP_ERROR_CHECK(ws2812_ret->set_pixel(ws2812_ret, j, red, green, blue));
ESP_ERROR_CHECK(ws2812_ret->refresh(ws2812_ret, 100));
vTaskDelay(pdMS_TO_TICKS(500));
}
ws2812_ret->clear(ws2812_ret, 50);
vTaskDelay(pdMS_TO_TICKS(1000));
}
xTaskCreate(TaskWS2812Ranbow, "TaskWS2812Ranbow", 1024 * 2, NULL, 8, NULL);
vTaskDelete(NULL);
}
/**
* @description: 彩虹效果
* @param {type}
* @return:
*/
void TaskWS2812Ranbow(void *p)
{
while (true)
{
for (int i = 0; i < 3; i++)
{
for (int j = i; j < 24; j += 3)
{
// Build RGB values
hue = j * 360 / 24 + start_rgb;
led_strip_hsv2rgb(hue, 100, 100, &red, &green, &blue);
// Write RGB values to strip driver
ESP_ERROR_CHECK(ws2812_ret->set_pixel(ws2812_ret, j, red, green, blue));
}
// Flush RGB values to LEDs
ESP_ERROR_CHECK(ws2812_ret->refresh(ws2812_ret, 100));
vTaskDelay(pdMS_TO_TICKS(10));
ws2812_ret->clear(ws2812_ret, 50);
vTaskDelay(pdMS_TO_TICKS(10));
}
start_rgb += 60;
}
}