找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

近段时间迷恋WS2812驱动,请老师帮忙看一下这单片机程序

查看数: 1352 | 评论数: 3 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-11-18 16:23

正文摘要:

这是STC官网stc32gDMA+spi+中断检测驱动ws2812的程序,想请老师指导修改成RGB为一组的追逐流水灯程序,试了几次没成。灯条为60灯的 在此感谢!! 以下是程: #define      &nb ...

回复

ID:891876 发表于 2024-11-25 14:34
zhuls 发表于 2024-11-24 23:11
#define        SPI_NUM        (LED_NUM*12)        //这个12从那来?不明白
可能要改为:
# ...

谢谢您指导,正在学习中
ID:961114 发表于 2024-11-25 09:19
我也迷恋,冠方论坛点灯大师太多了, 一起交流哈
ID:69038 发表于 2024-11-24 23:11
#define        SPI_NUM        (LED_NUM*12)        //这个12从那来?不明白
可能要改为:
#define        SPI_NUM        (LED_NUM*3)        //LED灯对应SPI字节数
试试看这个:

void run_one_init()//单色递增
{
u8 i,j;
u8 color_val=0;

for (i=0;i<60;i++)
  {
    led_RGB[ i][1]=color_val;//60珠全单色

   color_val+=10 ;             //色值递增,无所谓色值多少、递增多少,只要不超255就OK,但色值超一定值后,人眼并不敏感了。。

  }

}
void run_one_shift()//单色色值转移

{
u8 i,temp_val;
u8 color_val=0;
temp_val= led_RGB[0][1]; //暂存第一珠的色值

for (i=0;i<59;i++)
  {
    led_RGB[ i][1]=led_RGB[i+1][1];//后珠色值移向前珠

   }
led_RGB[59][1]=temp_val; //最后一珠的色值由第一珠暂存获取

}


在main中:


.
.
.
run_one_init();
while(1)
{
run_one_shift();
ws2812_send_all(led_RGB...)... //发送整串色值
delay_ms()...  //按需插入延时

}



手上没有相应的灯带,你参考测试一下。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表