![]() |
zhuls 发表于 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()... //按需插入延时 } } 手上没有相应的灯带,你参考测试一下。 |