色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是WS2812B?WS2812B燈帶是怎么連接的呢?

冬至子 ? 來源:小李的創(chuàng)客實(shí)驗(yàn)室 ? 作者:初出茅廬的小李 ? 2023-07-08 14:53 ? 次閱讀

什么是WS2812B?

WS2812B是一款全彩LED控制IC,單總線控制,何為單總線我的理解就是數(shù)據(jù)線在一根線上傳輸?shù)目刂品绞骄褪菃慰偩€。其實(shí)要把燈點(diǎn)亮僅有一根線是不行的,還需要電源線和地線給其供電。

WS2812B燈帶是怎么連接的呢?

圖片

就是一顆燈珠串聯(lián)另外一個(gè)燈珠,信號(hào)通過一根數(shù)據(jù)線相連起來控制等的亮滅就是在這根信號(hào)線上發(fā)送數(shù)據(jù)。

WS2812B燈帶的數(shù)據(jù)是什么樣的呢?

圖片

在說數(shù)據(jù)格式之前先來補(bǔ)充一下關(guān)于色彩的知識(shí)點(diǎn),就是三原色,紅綠藍(lán),也就是我們常說的RGB,R就是RED,G就是GREEN,B就是BLUE,一個(gè)彩色可以用這三種顏色的比例來混合出來。

為什么是紅綠藍(lán)?

三原色的原理不是出于物理原因,而是由于生理原因造成的。人的眼睛內(nèi)有幾種辨別顏色的錐形感光細(xì)胞,到的刺激略大于辨別綠色的細(xì)胞,人的感覺是黃色;如果辨別黃綠色的細(xì)胞受到的刺激大大高于辨別綠色的細(xì)胞,人的感覺是紅色。雖然三種細(xì)胞并不是分別對(duì)紅色、綠色和藍(lán)色最敏感,但這三種光可以分別對(duì)三種錐形細(xì)胞產(chǎn)生刺激。

既然“三原色的原理不是出于物理原因,而是由于生理原因造成的”,那么前段所說的“用三種原色的光以不同的比例加合到一起,形成各種顏色的光”顯然就不大合適。使用三原色并不足以重現(xiàn)所有的色彩,準(zhǔn)確的說法應(yīng)該是“將三原色光以不同的比例復(fù)合后,對(duì)人的眼睛可以形成與各種頻率的可見光等效的色覺。”只有那些在三原色的色度所定義的顏色三角內(nèi)的顏色,才可以利用三原色的光以非負(fù)量相加混合得到。

例如,紅光與綠光按某種比例復(fù)合,對(duì)三種錐狀細(xì)胞刺激后產(chǎn)生的色覺可與眼睛對(duì)單純的黃光的色覺等效。但絕不能認(rèn)為紅光與綠光按某種比例復(fù)合后生成黃光,或黃光是由紅光和綠光復(fù)合而成的。

24bit數(shù)據(jù)如何構(gòu)造?

既然是24bit數(shù)據(jù)代表三種顏色,我們就要首先知道一個(gè)bit的意義是什么,我們傳統(tǒng)意義上來說1個(gè)bit代表一個(gè)數(shù)據(jù)位,但是對(duì)于數(shù)據(jù)位bit的理解好像就是“1”或者“0”在數(shù)電里我們很容易把高低電平跟邏輯1和邏輯0對(duì)應(yīng)起來,但是表示燈珠的邏輯電平不是簡(jiǎn)單的高低電平。

在數(shù)值上0xFFFFFF就是24bit的1,0x000000就是24bit的0.這里有8個(gè)bit代表顏色G分量,G7G6G5G4G3G2G1G0,有8個(gè)bit代表R分量R7R6R5R4R3R2R1R0,有8個(gè)bit代表B分量B7B6B5B4B3B2B1B0,當(dāng)不同分量組合時(shí)候就會(huì)有不同的數(shù)據(jù)產(chǎn)生,這個(gè)數(shù)據(jù)背后其實(shí)是邏輯電平,這里要說明的是彩燈的邏輯“1”并不是簡(jiǎn)簡(jiǎn)單單的高電平,彩燈的邏輯“0”也不是簡(jiǎn)簡(jiǎn)單單的低電平。

WS2812B的邏輯“1”和邏輯“0”

圖片

由上圖可知“0”碼和“1”碼都是既有高電平又有低電平不過高電平和低電平的比例不同,這點(diǎn)很好理解,重點(diǎn)是分析一下它的特點(diǎn),首先直觀的特點(diǎn)就是編碼“0”的電平高電平時(shí)間短一些低電平時(shí)間長(zhǎng)一些,這也恰好符合我們的邏輯畢竟它還是低電平多一些的,編碼“1”的電平高電平時(shí)間就長(zhǎng)一些,而低電平就短一些。

但是不管是高電平還是低電平他們占用整個(gè)時(shí)間長(zhǎng)度是一樣的,這里還有一個(gè)很長(zhǎng)的低電平這個(gè)代表復(fù)位信號(hào)。

WS2812B控制波形的精準(zhǔn)描述如何?

這里涉及到嚴(yán)格的數(shù)學(xué)描述了,長(zhǎng)一點(diǎn)是多長(zhǎng)?短一點(diǎn)是多短?這個(gè)肯定是有標(biāo)準(zhǔn)或者是約束的

圖片

理論上來說,高電平時(shí)長(zhǎng)和低電平時(shí)長(zhǎng)加起來應(yīng)該是0.4us+0.85us或者0.85us+0.4us也就是說總共要占用1.25us的時(shí)間才可以編碼出來一個(gè)“0”或者“1”出來。復(fù)位是要求50us以上,顯然是要比編碼的0或者1占用的時(shí)間要多的。

當(dāng)然既然是電路的高低電平時(shí)長(zhǎng)就會(huì)引入誤差這個(gè)在誤差允許的范圍內(nèi)我們可以接受,這個(gè)范圍就是上下不超過150ns這里是ns比us還要小的時(shí)間,這個(gè)其實(shí)時(shí)間要求還是很嚴(yán)格的。

如何編程實(shí)現(xiàn)?

這里我選用我手上一個(gè)正點(diǎn)原子開發(fā)板,網(wǎng)上基于這種方式有很多驅(qū)動(dòng)方案,有直接驅(qū)動(dòng)也有PWM驅(qū)動(dòng)也有SPI驅(qū)動(dòng),還有PWM+DMA驅(qū)動(dòng),還有用一些開源庫(kù)進(jìn)行驅(qū)動(dòng)的,我感覺各種驅(qū)動(dòng)方式各有優(yōu)缺點(diǎn),我先來嘗試我認(rèn)為最容易想到的方式(不一定是最好的或者最合適的)玩一下,后面會(huì)根據(jù)這些方式的特點(diǎn)進(jìn)行一個(gè)總結(jié),在相對(duì)應(yīng)的需求下選用合適的方案是我們應(yīng)該重點(diǎn)考慮的。

實(shí)現(xiàn)us級(jí)別延時(shí)

硬件延時(shí)NOP實(shí)現(xiàn)

滴答定時(shí)器中斷實(shí)現(xiàn)

普通定時(shí)器實(shí)現(xiàn)

先用nop實(shí)現(xiàn)個(gè)us延時(shí)我手上的板子是精英板主控芯片STM32F103ZET6系統(tǒng)頻率是72M,一個(gè)NOP的周期就是1/72M單位是s = 1/72=單位是us,換句話說也就是72個(gè)NOP浪費(fèi)的時(shí)間是1us,0.4us就是0.4*72=28.8個(gè)NOP取整數(shù)29,0.2個(gè)NOP的誤差,因?yàn)橐粋€(gè)NOP是1/72 1000 個(gè)約等于是13.88個(gè)ns 所以0.2個(gè)NOP引起的誤差在150ns以內(nèi)可以接受。

0.8572=61.2NOP同樣取整數(shù)61個(gè)NOP,這樣組合一下編碼0的波形和編碼1的波形就有了,實(shí)現(xiàn)一個(gè) us函數(shù) 50us的低電平也可以產(chǎn)生復(fù)位信號(hào),理論分析完畢咱直接上代碼測(cè)試。

void RGB_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能PA,PD端口時(shí)鐘


 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;         //LED0-- >PA.8 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽輸出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //IO口速度為50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);           //根據(jù)設(shè)定參數(shù)初始化GPIOA.8


 GPIO_ResetBits(GPIOB,GPIO_Pin_12);              //PD.2 輸出高
}
 
void Bit_0(void)
{
   GPIO_SetBits(GPIOB,GPIO_Pin_12);              //PB12 輸出高
   Delay_L();
   GPIO_ResetBits(GPIOB,GPIO_Pin_12);                //PB12 輸出高
   Delay_H();
}
void Bit_1(void)
{
   GPIO_ResetBits(GPIOB,GPIO_Pin_12);              //PB12 輸出高
   Delay_H();
   GPIO_SetBits(GPIOB,GPIO_Pin_12);                //PB12 輸出高
   Delay_L();
}


void RGB_Set(void)
{
  for(uint8_t i = 0;i< 8;i++)
  {
    Bit_1();
  }
  for(uint8_t i = 0;i< 8;i++)
  {
    Bit_0();
  }
  for(uint8_t i = 0;i< 8;i++)
  {
    Bit_1();
  }
//  for(uint8_t i = 0;i< 24;i++)
//  {
//    delay_us(100);
//  }
}
void Delay_L(void)
{
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
}


void Delay_H(void)
{
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
  __nop();
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LED控制
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    16927
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    798

    瀏覽量

    58529
  • 定時(shí)器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11202
  • PWM驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1206
  • WS2812B
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    2190
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    哪位大神有完整的STM32F205驅(qū)動(dòng)WS2812B的程序

    哪位大神有完整的STM32F205驅(qū)動(dòng)WS2812B的程序
    發(fā)表于 09-03 18:08

    使用ESP8266驅(qū)動(dòng)WS2812B型RGB LED智能制作分享

    這個(gè)智能方案很不錯(cuò),只用了一個(gè)無線WIFI esp8266芯片,驅(qū)動(dòng)ws2812b型RGB LED,效果很贊,在群里看到的,特分享下,若是侵犯了版權(quán),聯(lián)系我刪除就行了
    發(fā)表于 07-16 04:35

    WS2812B RGB全彩LED

    WS2812B RGB全彩LED珠,只需通過一根信號(hào)線控制多個(gè)顯示,本教程使用X-CTR100控制器驅(qū)動(dòng)WS2812環(huán)。原理
    發(fā)表于 08-06 08:15

    怎樣給WS2812B發(fā)送數(shù)據(jù)

    1. 對(duì)于寫驅(qū)動(dòng)來說WS2812B芯片手冊(cè)主要就是看通訊。簡(jiǎn)單來說就是給WS2812B發(fā)送數(shù)據(jù),數(shù)據(jù)就是RGB對(duì)應(yīng)的值,先發(fā)高位,按照GRB的順序發(fā)送數(shù)據(jù)。通常我們用高電平表示數(shù)字信號(hào)“1”,低電平
    發(fā)表于 02-22 06:51

    基于GD32F427開發(fā)板點(diǎn)亮WS2812B炫彩燈環(huán)的設(shè)計(jì)實(shí)現(xiàn)

    1、如何點(diǎn)亮WS2812B炫彩燈環(huán)  我有一個(gè)WS2812B炫彩燈環(huán),搭配精選的背景  在玩過的板子上,我都要把它點(diǎn)亮。  關(guān)于WS2812B的介紹資料,網(wǎng)上有很多,這里就不細(xì)說了,
    發(fā)表于 11-25 15:51

    WS2812B多了怎么保證時(shí)序的正確?

    WS2812B多了,怎么保證時(shí)序的正確。
    發(fā)表于 09-20 08:14

    【有趣的全彩LED | 編程】用STM32 HAL庫(kù)讓WS2812B為你所動(dòng)

    【有趣的全彩LED | 編程】用STM32 HAL庫(kù)讓WS2812B為你所動(dòng)
    發(fā)表于 12-05 15:06 ?35次下載
    【有趣的全彩LED | 編程】用STM32 HAL庫(kù)讓<b class='flag-5'>WS2812B</b>為你所動(dòng)

    STM32F1 DMA+PWM 控制WS2812B LED

    1. 對(duì)于寫驅(qū)動(dòng)來說WS2812B芯片手冊(cè)主要就是看通訊。簡(jiǎn)單來說就是給WS2812B發(fā)送數(shù)據(jù),數(shù)據(jù)就是RGB對(duì)應(yīng)的值,先發(fā)高位,按照GRB的順序發(fā)送數(shù)據(jù)。通常我們用高電平表示數(shù)字信號(hào)“1”,低電平
    發(fā)表于 12-28 19:11 ?77次下載
    STM32F1 DMA+PWM 控制<b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b>

    Arduino WS2812B LED設(shè)計(jì)方案

    Arduino WS2812B LED可單獨(dú)控制每個(gè)LED的亮度和顏色,提供了一種簡(jiǎn)單而酷炫的LED效果體驗(yàn)。
    發(fā)表于 04-24 08:36 ?1.3w次閱讀
    Arduino <b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b><b class='flag-5'>帶</b>設(shè)計(jì)方案

    WS2812B遠(yuǎn)程區(qū)域面板控制器

    電子發(fā)燒友網(wǎng)站提供《WS2812B遠(yuǎn)程區(qū)域面板控制器.zip》資料免費(fèi)下載
    發(fā)表于 07-18 09:07 ?3次下載
    <b class='flag-5'>WS2812B</b>遠(yuǎn)程區(qū)域面板控制器

    ESP32 WS2812b分線板開源分享

    電子發(fā)燒友網(wǎng)站提供《ESP32 WS2812b分線板開源分享.zip》資料免費(fèi)下載
    發(fā)表于 07-29 10:04 ?3次下載
    ESP32 <b class='flag-5'>WS2812b</b>分線板開源分享

    使用WS2812b Led條的diy光劍控制器

    電子發(fā)燒友網(wǎng)站提供《使用WS2812b Led條的diy光劍控制器.zip》資料免費(fèi)下載
    發(fā)表于 08-02 11:01 ?11次下載
    使用<b class='flag-5'>WS2812b</b> Led<b class='flag-5'>燈</b>條的diy光劍控制器

    迷你乒乓球含Arduino Nano WS2812B LED

    電子發(fā)燒友網(wǎng)站提供《迷你乒乓球含Arduino Nano WS2812B LED條.zip》資料免費(fèi)下載
    發(fā)表于 11-02 11:00 ?0次下載
    迷你乒乓球含Arduino Nano <b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b>條

    WS2812B遙控控制器

    電子發(fā)燒友網(wǎng)站提供《WS2812B遙控控制器.zip》資料免費(fèi)下載
    發(fā)表于 11-25 09:16 ?8次下載
    <b class='flag-5'>WS2812B</b>遙控<b class='flag-5'>燈</b>控制器

    適用于Azure Sphere的WS2812B LED驅(qū)動(dòng)器

    電子發(fā)燒友網(wǎng)站提供《適用于Azure Sphere的WS2812B LED驅(qū)動(dòng)器.zip》資料免費(fèi)下載
    發(fā)表于 12-06 14:42 ?0次下載
    適用于Azure Sphere的<b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b><b class='flag-5'>帶</b>驅(qū)動(dòng)器
    主站蜘蛛池模板: 国内精品偷拍在线观看| 性做久久久久久久久浪潮| ewp绞死vk失禁编| 亚洲精品成人| 欧洲另类一二三四区| 精品亚洲国产熟女福利自在线| avove旗袍丝袜高跟啪啪| 亚洲欭美日韩颜射在线二| 使劲别停好大好深好爽动态图| 李丽莎与土豪50分钟在线观看| 国产亚洲精品久久久999密臂| 草柳最新地址| 91福利潘春春在线观看| 亚洲精品午夜VA久久成人| 涩涩视频在线看| 欧美在线看欧美视频免费| 看全色黄大色大片免费久黄久| 国产又爽又黄又不遮挡视频 | 美女尿口羞羞视频| 好爽别插了无码视频| 钉钉女老师| www.亚洲天堂| gayxxxxgay呻吟受日本| 5G在线观看免费年龄确认18| 一本久道视频无线视频| 亚洲精品无码不卡在线播HE| 校草让我脱了内裤给全班看| 色综合伊人色综合网站| 青青久在线| 青青草原在线新免费| 欧美另类z0z000高清| 免费看亚洲| 美女国产毛片A区内射| 麻豆AV久久无码精品九九| 久久天天躁狠狠躁夜夜呲| 九九这里有精品| 九九热视频 这里有精品| 精品日韩视频| 久久精品AV麻豆| 久久综合久久伊人| 毛片免费观看视频|