说明
本次验证了 jkernet 大佬 GPIO 控制 WS2812 模块 外设库
【外设移植】WS2812B彩灯+M61开发板+显示器氛围灯 - DIY 经验分享 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)
外设移植里面的Demo是一个结合上位机 通过电脑串口控制WS2812
我没跑,单独写了一个验证Demo,验证每个函数功能是否正常
SDK 验证成功,Arduino 我没移植成功,暂时略过
验证Demo
#include "board.h"
#include "bflb_gpio.h"
#include "mini_ws2812b.h"
#include "bflb_mtimer.h"
int main(void)
{
board_init();
// 初始化ws2812b 数据引脚:18 灯珠数量:1 灯珠类型:GRB
ws2812b_init(18, 100, WS2812B_TYPE_GRB);
if (ws2812b_isReady())
{
printf("init OK\r\n");
}
// 颜色变量,蓝色
uint8_t color[3] = {0, 0, 255};
// 设置第一个灯珠为蓝色
ws2812b_setColor(0, color);
// 发送数据,点亮灯珠
ws2812b_flush();
bflb_mtimer_delay_ms(2000);
uint8_t color2[3] = {65, 0, 0};
ws2812b_setColors(1, 9, color2);
// 发送数据,点亮灯珠
ws2812b_flush();
ws2812b_setOff(0);
// 发送数据
ws2812b_flush();
bflb_mtimer_delay_ms(2000);
uint8_t color3[3] = {255, 0, 0};
ws2812b_setColors(1, 9, color3);
ws2812b_reset();
uint8_t color4[3] = {0, 255, 0};
ws2812b_setColors(1, 9, color4);
// 发送数据
ws2812b_flush();
bflb_mtimer_delay_ms(2000);
color4[1] = 0;
color4[2] = 66;
ws2812b_setColorAll(color4);
// 发送数据
ws2812b_flush();
bflb_mtimer_delay_ms(2000);
ws2812b_deinit();
if (!ws2812b_isReady())
{
printf("deinit OK\r\n");
}
while (1)
{
}
return 0;
}
Demo效果
串口输出
使用
我把外设移植通过验证的的库统一会放到 Gitee 仓库,仓库中分别有 SDK 库方式 和 Arduino 库方式(可移植)
接线
灯珠建议单独供电,防止烧板子,记得共地(GND连GND)
GIT 仓库
https://gitee.com/wukong50/m61-libraries.git
SDK 使用方式
SDK 模式
- 克隆 Git 仓库
- 切换到此目录下
m61-libraries\WS2812\SDK\WS2812
- 修改 Makefile SDK 路径
- 直接 make flash 即可
- 烧录的时候需要手动进入烧录模式,先将按住板子上的"IO2"再按一下"EN"使板子进入烧录模式
- 烧录有问题,请看文章末尾答疑
答疑
- 如何搭建 linux 环境
零基础搭建小安派 Linux 开发环境之【编译运行 Hello world】 - 小安派 S1&M61 教程合集 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)
- 编译报错#lwip/dns.h
关于编译报错#lwip/dns.h 找不到的解决办法 - 小安派 S1&M61 教程合集 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)