【开源获奖案例】迪文屏控制WS2812氛围灯

        ——来自迪文开发者论坛

     

本期为大家推送迪文开发者论坛获奖开源案例——迪文屏控制WS2812氛围灯,工程师通过COF智能屏的OS核精准控制WS2812幻彩灯带每一颗灯珠颜色,实现炫酷的灯带颜色切换的动态效果。


【演示视频】

完整开发资料含迪文屏DGUS工程资料与C51代码,获取方式:

1. 前往迪文开发者论坛获取:/index.html/forum.php?mod=viewthread&tid=9445&extra=page%3D1

2. 微信公众号中回复“氛围灯”获取。


UI素材展示

UI素材展示

UI开发示例

UI开发示例


【C51工程设计】

通过IO口控制灯的颜色驱动代码如下:

void WS2812_Write_RGB()

{

        u8 i,j,a;

        EA=0;

        for(j=0;j<3;j++)//每个灯需要传输次数

        {

                a=RGB_One[j];

                for(i=0;i<8;i++)

                {

                        WS2812_DI=1;

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

                        WS2812_DI=(a&0x80);        

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

                        a<<=1;

                        WS2812_DI=0;

                }

                WS2812_DI=0;

        }

        EA=1;

}

    void WS2812_RST()

{

        WS2812_DI=0;

        sys_delay_ms(1);

}

void WS2812_DIS_1()//效果1,颜色切换,所有LED颜色一样,共7种基本色

{

        static u8 j=1;

        u16 i=0;

        if(j&0X01) RGB_One[1]=10;else RGB_One[1]=0;

        if(j&0X02) RGB_One[0]=10;else RGB_One[0]=0;

        if(j&0X04) RGB_One[2]=10;else RGB_One[2]=0;

        j%=7;

        j++;

        for(i=0;i<num_val;i++)

        WS2812_Write_RGB();

        WS2812_RST();

        sys_delay_ms(1000);

}