找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13932|回復: 26
收起左側

sk6812藍牙燈帶控制stm32源碼

  [復制鏈接]
ID:254328 發(fā)表于 2017-12-14 19:26 | 顯示全部樓層 |閱讀模式
藍牙控制,格式是(first位置,finally位置,顏色32位數(shù)據(jù)),控制任一一段燈的顏色,還有跑馬燈可以修改,由于我的燈帶數(shù)目是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個字節(jié)  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);//設置系統(tǒng)中斷優(yōu)先級分組2
  16.         delay_init(168);  //初始化延時函數(shù)
  17.         LED_Init();                                //初始化LED端口
  18.         uart_init(9600);        //串口初始化波特率為115200   
  19.         while(1)
  20.         {
  21.                                 if(USART_RX_STA!=0)  //判斷是否接收到數(shù)據(jù)
  22.                 {                                          
  23.                
  24.                         len=num;//得到此次接收到的數(shù)據(jù)長度
  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);//跑馬燈,顏色,個數(shù)
  77.         }
  78. }
復制代碼

所有資料51hei提供下載:
sk6812燈帶控制.rar (453.76 KB, 下載次數(shù): 208)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:208659 發(fā)表于 2017-12-20 09:14 | 顯示全部樓層
挺好的
回復

使用道具 舉報

ID:270573 發(fā)表于 2018-1-3 09:23 | 顯示全部樓層
不錯呢
回復

使用道具 舉報

ID:272069 發(fā)表于 2018-1-5 18:34 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:272069 發(fā)表于 2018-1-5 18:35 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:221675 發(fā)表于 2018-1-6 20:49 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:281601 發(fā)表于 2018-2-1 23:42 來自觸屏版 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:201690 發(fā)表于 2018-2-12 22:01 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:283943 發(fā)表于 2018-2-13 13:18 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:10181 發(fā)表于 2018-2-13 23:43 | 顯示全部樓層

謝謝分享
回復

使用道具 舉報

ID:224126 發(fā)表于 2018-4-1 23:40 | 顯示全部樓層
你好,請教個問題。我準備用STM32F429 來控制sk6812,但嘗試了很久都點不亮燈,看到你的程序給了我啟發(fā),有幾點不明白,希望指點下。
1. sk6812規(guī)格書 信號1 信號0 如下,但你程序延時好像沒有按規(guī)格書來
無標題.png
2.__nop()延時問題
f429 主頻180MHZ 我在調(diào)試狀態(tài)查看一個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. 我調(diào)試發(fā)現(xiàn)GPIO 反轉都要200ns 時間,這讓我已經(jīng)無法控制stm32產(chǎn)生精確的時序了
  1. PAout_GPIO_PORT->BSRRH = PAout_GPIO_PIN
復制代碼

希望不吝賜教,這個問題困擾我好幾天了。謝謝

回復

使用道具 舉報

ID:224126 發(fā)表于 2018-4-1 23:43 | 顯示全部樓層
你好,請教個問題。我準備用STM32F429 來控制sk6812,但嘗試了很久都點不亮燈,看到你的程序給了我啟發(fā),有幾點不明白,希望指點下。
1. sk6812規(guī)格書 信號1 信號0 如下,但你程序延時好像沒有按規(guī)格書來
無標題.png
2.__nop()延時問題
f429 主頻180MHZ 我在調(diào)試狀態(tài)查看一個nop 耗時100ns(大的不可理解),這是為什么呢?
從你程序來看,168MHZ 一個nop 是14ns左右

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

    }

    }

3. 我調(diào)試發(fā)現(xiàn)GPIO 反轉都要200ns 時間,這讓我已經(jīng)無法控制stm32產(chǎn)生精確的時序了

    PAout_GPIO_PORT->BSRRH = PAout_GPIO_PIN


希望不吝賜教,這個問題困擾我好幾天了。謝謝
回復

使用道具 舉報

ID:254328 發(fā)表于 2018-6-7 09:53 | 顯示全部樓層
yinlianger 發(fā)表于 2018-4-1 23:40
你好,請教個問題。我準備用STM32F429 來控制sk6812,但嘗試了很久都點不亮燈,看到你的程序給了我啟發(fā),有 ...

好久沒看論壇 不好意思 可以加1098477243 一起探討
回復

使用道具 舉報

ID:254328 發(fā)表于 2018-6-7 09:54 | 顯示全部樓層
yinlianger 發(fā)表于 2018-4-1 23:43
你好,請教個問題。我準備用STM32F429 來控制sk6812,但嘗試了很久都點不亮燈,看到你的程序給了我啟發(fā),有 ...

當時我是用示波器測得時間
回復

使用道具 舉報

ID:209947 發(fā)表于 2018-6-20 15:45 | 顯示全部樓層
給力啊大佬,這網(wǎng)站往往能下載到有用的資料!
回復

使用道具 舉報

ID:15104 發(fā)表于 2018-11-14 19:15 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:96552 發(fā)表于 2018-12-28 08:52 | 顯示全部樓層
謝謝分享!請問手機APP可以控制嗎?用哪個APP合適
回復

使用道具 舉報

ID:254328 發(fā)表于 2019-1-14 03:21 | 顯示全部樓層
hilam 發(fā)表于 2018-12-28 08:52
謝謝分享!請問手機APP可以控制嗎?用哪個APP合適

手機app藍牙可以控制
回復

使用道具 舉報

ID:18591 發(fā)表于 2019-2-4 15:06 | 顯示全部樓層
感謝分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回復

使用道具 舉報

ID:413119 發(fā)表于 2019-6-16 21:08 | 顯示全部樓層
感謝大佬
回復

使用道具 舉報

ID:413119 發(fā)表于 2019-6-16 21:23 | 顯示全部樓層
這里的RGB值具體是如何計算的呢
回復

使用道具 舉報

ID:407899 發(fā)表于 2019-7-16 23:42 | 顯示全部樓層
正在調(diào)試這個,感謝
回復

使用道具 舉報

ID:603929 發(fā)表于 2019-9-24 07:51 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:296060 發(fā)表于 2019-10-11 14:54 | 顯示全部樓層
感謝分享學習下。。。
回復

使用道具 舉報

ID:151626 發(fā)表于 2019-10-16 16:57 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:151626 發(fā)表于 2019-10-16 17:38 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表