打印
[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】+ WS2812彩灯控制

[复制链接]
1170|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2022-11-10 00:48 编辑

AVR64DD32开发板支持对WS2812彩灯的控制,可以指定彩灯的个数并通过编程来改变彩灯的显示效果。
这里采用的是一款有12个灯珠的环形模块,其静态显示效果如图1所示。
图1 色彩切换显示效果


其设置色彩的函数为:
static void WriteNeopixel(color_t color)
{
    TCA0_Start();   
    SPI0_ByteExchange(color.greenChannel);
    SPI0_ByteExchange(color.redChannel);
    SPI0_ByteExchange(color.blueChannel);
    TCA0_Stop();
}
在指定灯珠个数的情况下,通过下面的函数可打量多个灯珠,其程序为:
static void WriteLEDsString(const color_t *frame)
{
    uint8_t i;
    for(i = 0; i < NUMBER_OF_LEDS; i++)
    {
        WriteNeopixel(frame[i]);
    }
}
要使用灯珠循环切换色彩的主程序为:
void main(void)
{
    uint8_t i;
    color_t R1 = {100, 0, 0};
    color_t G1 = {0, 100, 0};
    color_t B1 = {0, 0, 100};
    while (1)
    {
        for(i = 0; i < 12; i++)  
        {
           WriteNeopixel(R1);
        }
        _delay_ms(2000);
        for(i = 0; i < 11; i++)
        {
           WriteNeopixel(G1);
        }
        _delay_ms(2000);
        for(i = 0; i < 12; i++)
        {
           WriteNeopixel(B1);
        }
        _delay_ms(2000);
    }
}
另外,还可实现彩灯的循环旋转效果和循环推进和收缩效果,见图2和图3所示。
图2 旋转效果
图3  渐进效果

实现色彩渐进的主程序为:
void main(void)
{
    uint8_t i,j;
    color_t R1 = {100, 0, 0};
    color_t G1 = {0, 100, 0};
    color_t B1 = {0, 0, 100};
    color_t H1 = {0, 0, 0};
    while (1)
    {
        for(i = 0; i < 11; i++)
        {
           WriteNeopixel(H1);
        }
        _delay_ms(500);
        for(j = 0; j < 11; j++)
        {
          for(i = 0; i < 11; i++)
          {
            if(i<=j) WriteNeopixel(G1);
}
          _delay_ms(1000);
        }
    }
}
此外,还可以实现色彩的组合显示效果,见图4所示。
图4 多彩显示效果

视频演示:

使用特权

评论回复
沙发
weifeng90| | 2022-11-11 08:17 | 只看该作者
可以做个面阵RGB,做像素显示。

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2022-11-11 11:45 | 只看该作者
weifeng90 发表于 2022-11-11 08:17
可以做个面阵RGB,做像素显示。

没错,也可买一条光带,剪成等长的几段组成阵列来使用。

使用特权

评论回复
地板
uptown| | 2023-7-12 17:37 | 只看该作者
用WS2812制作的灯带控制程序非常实用

使用特权

评论回复
5
houjiakai| | 2023-7-12 18:09 | 只看该作者
ws2812灯珠怎样防止烧坏              

使用特权

评论回复
6
jinglixixi|  楼主 | 2023-7-12 18:13 | 只看该作者
houjiakai 发表于 2023-7-12 18:09
ws2812灯珠怎样防止烧坏

看具体情况,是防止反接或是因为电流较大等。

使用特权

评论回复
7
gygp| | 2023-7-13 17:19 | 只看该作者
怎么操作WS2812B彩灯模块              

使用特权

评论回复
8
jinglixixi|  楼主 | 2023-7-13 18:52 | 只看该作者
gygp 发表于 2023-7-13 17:19
怎么操作WS2812B彩灯模块

单总线编程,串行输出0、1信号。

使用特权

评论回复
9
louliana| | 2023-7-14 14:19 | 只看该作者
WS2812用什么芯片做音频灯

使用特权

评论回复
10
wilhelmina2| | 2023-7-14 18:14 | 只看该作者
WS2812是属于内置IC吗              

使用特权

评论回复
11
jinglixixi|  楼主 | 2023-7-15 08:55 | 只看该作者
wilhelmina2 发表于 2023-7-14 18:14
WS2812是属于内置IC吗

使用特权

评论回复
12
小明的同学| | 2024-7-27 17:48 | 只看该作者
AVR的比PIC的好用太多了

使用特权

评论回复
13
wanduzi| | 2024-7-30 19:17 | 只看该作者
没有分享工程啊,不知道怎么配置的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

464

主题

2780

帖子

38

粉丝