蓝牙控制,格式是(first位置,finally位置,颜色32位数据),控制任一一段灯的颜色,还有跑马灯可以修改,由于我的灯带数目是60 ,所以位置是0到60设置。
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "timer.h"
-
- int main(void)
- {
- u8 r,g,b,w; //4个字节 32位
- u32 lednum[60];
- u32 yanse;
- u8 t;
- u8 len,r1,r2,g1,g2,b1,b2,w1,w2,R,G,B,W;
- u16 led_first,led_end;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
- delay_init(168); //初始化延时函数
- LED_Init(); //初始化LED端口
- uart_init(9600); //串口初始化波特率为115200
- while(1)
- {
- if(USART_RX_STA!=0) //判断是否接收到数据
- {
-
- len=num;//得到此次接收到的数据长度
- printf("\r\n\r\n");//插入换行
-
- if(data_buff[8]>87) r1=data_buff[8]-87;
- else r1=data_buff[8]-48;
-
- if(data_buff[9]>87) r2=data_buff[9]-87;
- else r2=data_buff[9]-48;
-
- if(data_buff[10]>87) g1=data_buff[10]-87;
- else g1=data_buff[10]-48;
- if(data_buff[11]>87) g2=data_buff[11]-87;
- else g2=data_buff[11]-48;
-
- if(data_buff[12]>87) b1=data_buff[12]-87;
- else b1=data_buff[12]-48;
- if(data_buff[13]>87) b2=data_buff[13]-87;
- else b2=data_buff[13]-48;
-
- if(data_buff[14]>87) w1=data_buff[14]-87;
- else w1=data_buff[14]-48;
- if(data_buff[15]>87) w2=data_buff[15]-87;
- else w2=data_buff[15]-48;
-
-
- R=r1<<4|r2;
- G=g1<<4|g2;
- B=b1<<4|b2;
- W=w1<<4|w2;
- yanse=R<<24|G<<16|B<<8|W;
- led_first=100*(data_buff[0]-48)+10*(data_buff[1]-48)+1*(data_buff[2]-48);
- led_end=100*(data_buff[4]-48)+10*(data_buff[5]-48)+1*(data_buff[6]-48);
- printf("%d\r\n",led_first);
- printf("%d\r\n",led_end);
- printf("%d\r\n",r1);
- printf("%d\r\n",r2);
- printf("%d\r\n",g1);
- printf("%d\r\n",g2);
- printf("%d\r\n",b1);
- printf("%d\r\n",b2);
- printf("%d\r\n",w1);
- printf("%d\r\n",w2);
- printf("%d\r\n",R);
- printf("%d\r\n",G);
- printf("%d\r\n",B);
- printf("%d\r\n",W);
- printf("%d\r\n",led_first);
- printf("%d\r\n",led_end);
- printf("yanse=%x",yanse);
- USART_RX_STA=0;
- num=0;
- }
- paoma_led(yanse,led_first-1,led_end-1,1);//跑马灯,颜色,个数
- }
- }
复制代码
所有资料51hei提供下载:
sk6812灯带控制.rar
(453.76 KB, 下载次数: 208)
|