单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4343|回复: 21
打印 上一主题 下一主题
收起左侧

sk6812蓝牙灯带控制stm32源码

  [复制链接]
跳转到指定楼层
楼主
蓝牙控制,格式是(first位置,finally位置,颜色32位数据),控制任一一段灯的颜色,还有跑马灯可以修改,由于我的灯带数目是60 ,所以位置是0到60设置。

单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "timer.h"
  6.   
  7. int main(void)
  8. {
  9.         u8 r,g,b,w;  //4个字节  32位
  10.   u32 lednum[60];
  11.         u32 yanse;
  12.         u8 t;
  13.         u8 len,r1,r2,g1,g2,b1,b2,w1,w2,R,G,B,W;       
  14.         u16 led_first,led_end;
  15.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  16.         delay_init(168);  //初始化延时函数
  17.         LED_Init();                                //初始化LED端口
  18.         uart_init(9600);        //串口初始化波特率为115200   
  19.         while(1)
  20.         {
  21.                                 if(USART_RX_STA!=0)  //判断是否接收到数据
  22.                 {                                          
  23.                
  24.                         len=num;//得到此次接收到的数据长度
  25.                         printf("\r\n\r\n");//插入换行
  26.                         
  27.                         if(data_buff[8]>87)  r1=data_buff[8]-87;       
  28.                         else                 r1=data_buff[8]-48;         
  29.                        
  30.                         if(data_buff[9]>87)  r2=data_buff[9]-87;  
  31.       else                 r2=data_buff[9]-48;
  32.                
  33.                         if(data_buff[10]>87)  g1=data_buff[10]-87;       
  34.                         else                 g1=data_buff[10]-48;         
  35.                         if(data_buff[11]>87)  g2=data_buff[11]-87;  
  36.       else                 g2=data_buff[11]-48;
  37.                        
  38.                         if(data_buff[12]>87)  b1=data_buff[12]-87;       
  39.                         else                 b1=data_buff[12]-48;         
  40.                         if(data_buff[13]>87)  b2=data_buff[13]-87;  
  41.       else                 b2=data_buff[13]-48;
  42.                        
  43.                         if(data_buff[14]>87)  w1=data_buff[14]-87;       
  44.                         else                 w1=data_buff[14]-48;         
  45.                         if(data_buff[15]>87)  w2=data_buff[15]-87;  
  46.       else                 w2=data_buff[15]-48;
  47.                        
  48.                        
  49.                   R=r1<<4|r2;
  50.         G=g1<<4|g2;                       
  51.                              B=b1<<4|b2;
  52.                               W=w1<<4|w2;
  53.                         yanse=R<<24|G<<16|B<<8|W;
  54.                         led_first=100*(data_buff[0]-48)+10*(data_buff[1]-48)+1*(data_buff[2]-48);
  55.                   led_end=100*(data_buff[4]-48)+10*(data_buff[5]-48)+1*(data_buff[6]-48);
  56.                         printf("%d\r\n",led_first);
  57.                         printf("%d\r\n",led_end);       
  58.                         printf("%d\r\n",r1);
  59.                         printf("%d\r\n",r2);
  60.                         printf("%d\r\n",g1);
  61.                         printf("%d\r\n",g2);
  62.                         printf("%d\r\n",b1);
  63.                         printf("%d\r\n",b2);
  64.                         printf("%d\r\n",w1);
  65.                         printf("%d\r\n",w2);
  66.                         printf("%d\r\n",R);
  67.                   printf("%d\r\n",G);
  68.                         printf("%d\r\n",B);
  69.                         printf("%d\r\n",W);
  70.                         printf("%d\r\n",led_first);
  71.                         printf("%d\r\n",led_end);
  72.                         printf("yanse=%x",yanse);
  73.                         USART_RX_STA=0;
  74.                         num=0;
  75.                 }
  76. paoma_led(yanse,led_first-1,led_end-1,1);//跑马灯,颜色,个数
  77.         }
  78. }
复制代码

所有资料51hei提供下载:
sk6812灯带控制.rar (453.76 KB, 下载次数: 88)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
是啊啊啊 发表于 2017-12-20 09:14 | 只看该作者
挺好的
回复

使用道具 举报

板凳
aa8473229 发表于 2018-1-3 09:23 | 只看该作者
不错呢
回复

使用道具 举报

地板
HaoLiufu 发表于 2018-1-5 18:34 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
无效楼层,该帖已经被删除
6#
HaoLiufu 发表于 2018-1-5 18:35 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
janson 发表于 2018-1-6 20:49 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
无效楼层,该帖已经被删除
9#
ansonwn 发表于 2018-2-1 23:42 来自手机 | 只看该作者
謝謝分享
回复

使用道具 举报

10#
110691 发表于 2018-2-12 22:01 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
ECHO_ECHE 发表于 2018-2-13 13:18 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
allielxh 发表于 2018-2-13 23:43 | 只看该作者

谢谢分享
回复

使用道具 举报

13#
yinlianger 发表于 2018-4-1 23:40 | 只看该作者
你好,请教个问题。我准备用STM32F429 来控制sk6812,但尝试了很久都点不亮灯,看到你的程序给了我启发,有几点不明白,希望指点下。
1. sk6812规格书 信号1 信号0 如下,但你程序延时好像没有按规格书来

2.__nop()延时问题
f429 主频180MHZ 我在调试状态查看一个nop 耗时100ns(大的不可理解),这是为什么呢?
从你程序来看,168MHZ 一个nop 是14ns左右
  1. void delay_ns(u16 ns)  //ÑÓʱ;ns*14ns
  2. {       
  3. u16 num=ns;       
  4. for(num;num>0;num--)
  5.         {
  6. __NOP();   

  7.         }
  8.                
  9. }
复制代码
3. 我调试发现GPIO 反转都要200ns 时间,这让我已经无法控制stm32产生精确的时序了
  1. PAout_GPIO_PORT->BSRRH = PAout_GPIO_PIN
复制代码

希望不吝赐教,这个问题困扰我好几天了。谢谢

回复

使用道具 举报

14#
yinlianger 发表于 2018-4-1 23:43 | 只看该作者
你好,请教个问题。我准备用STM32F429 来控制sk6812,但尝试了很久都点不亮灯,看到你的程序给了我启发,有几点不明白,希望指点下。
1. sk6812规格书 信号1 信号0 如下,但你程序延时好像没有按规格书来

2.__nop()延时问题
f429 主频180MHZ 我在调试状态查看一个nop 耗时100ns(大的不可理解),这是为什么呢?
从你程序来看,168MHZ 一个nop 是14ns左右

    void delay_ns(u16 ns) //ÑÓʱ;ns*14ns
    {
    u16 num=ns;
    for(num;num>0;num--)
    {
    __NOP();

    }

    }

3. 我调试发现GPIO 反转都要200ns 时间,这让我已经无法控制stm32产生精确的时序了

    PAout_GPIO_PORT->BSRRH = PAout_GPIO_PIN


希望不吝赐教,这个问题困扰我好几天了。谢谢
回复

使用道具 举报

15#
无效楼层,该帖已经被删除
16#
 楼主| prefect_long 发表于 2018-6-7 09:53 | 只看该作者
yinlianger 发表于 2018-4-1 23:40
你好,请教个问题。我准备用STM32F429 来控制sk6812,但尝试了很久都点不亮灯,看到你的程序给了我启发,有 ...

好久没看论坛 不好意思 可以加1098477243 一起探讨
回复

使用道具 举报

17#
 楼主| prefect_long 发表于 2018-6-7 09:54 | 只看该作者
yinlianger 发表于 2018-4-1 23:43
你好,请教个问题。我准备用STM32F429 来控制sk6812,但尝试了很久都点不亮灯,看到你的程序给了我启发,有 ...

当时我是用示波器测得时间
回复

使用道具 举报

18#
JUCAT 发表于 2018-6-20 15:45 | 只看该作者
给力啊大佬,这网站往往能下载到有用的资料!
回复

使用道具 举报

19#
无效楼层,该帖已经被删除
20#
zxgpy 发表于 2018-11-14 19:15 | 只看该作者
谢谢分享
回复

使用道具 举报

21#
无效楼层,该帖已经被删除
22#
hilam 发表于 2018-12-28 08:52 | 只看该作者
谢谢分享!请问手机APP可以控制吗?用哪个APP合适
回复

使用道具 举报

23#
 楼主| prefect_long 发表于 2019-1-14 03:21 | 只看该作者
hilam 发表于 2018-12-28 08:52
谢谢分享!请问手机APP可以控制吗?用哪个APP合适

手机app蓝牙可以控制
回复

使用道具 举报

24#
jxchen 发表于 2019-2-4 15:06 | 只看该作者
感謝分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

25#
PatrickStar 发表于 2019-6-16 21:08 | 只看该作者
感谢大佬
回复

使用道具 举报

26#
PatrickStar 发表于 2019-6-16 21:23 | 只看该作者
这里的RGB值具体是如何计算的呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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