{"id":6643,"date":"2021-04-19T09:35:00","date_gmt":"2021-04-19T01:35:00","guid":{"rendered":"http:\/\/www.nvled.com\/?p=6643"},"modified":"2023-06-08T16:25:40","modified_gmt":"2023-06-08T08:25:40","slug":"ws2812b%e5%85%a8%e5%bd%a9led%e9%a9%b1%e5%8a%a8","status":"publish","type":"post","link":"https:\/\/www.nvled.com\/?p=6643","title":{"rendered":"WS2812B\u5168\u5f69LED\u9a71\u52a8, \u4ee3\u7801\u5b9e\u73b0\u4e86\u5faa\u73af\u79fb\u52a8\u7684\u6d41\u6c34\u706f\u70b9\u4eae\u6548\u679c"},"content":{"rendered":"\n<p>\u6807\u7b7e\uff1a&nbsp;Arduino \u5f00\u53d1\u6559\u7a0b&nbsp;&nbsp;ESP32 \u5b66\u4e60\u7b14\u8bb0 \u7535\u5b50\u7535\u8def&nbsp;&nbsp;\u5355\u7247\u673a<br>\u7248\u6743\u58f0\u660e\uff1a\u672c\u6587\u4e3aLennon8_8\u539f\u521b\u6587\u7ae0\uff0c\u9075\u5faa&nbsp;CC 4.0 BY-SA&nbsp;\u7248\u6743\u534f\u8bae\uff0c\u8f6c\u8f7d\u8bf7\u9644\u4e0a\u539f\u6587\u51fa\u5904\u94fe\u63a5\u548c\u672c\u58f0\u660e\u3002 <\/p>\n\n\n\n<p>\u4eca\u5929\u5fc3\u8840\u6765\u6f6e\u82b1\u4e86\u70b9\u65f6\u95f4\u5199\u4e86\u4e2aWS2812B\u7684\u9a71\u52a8\uff0c\u628a\u706f\u70b9\u4eae\u4e86\u3002<\/p>\n\n\n\n<p>WS2812B\u662f\u4e00\u6b3e\u5168\u5f69LED\u63a7\u5236IC\uff0c\u5355\u603b\u7ebf\u63a7\u5236\uff0c\u4fe1\u53f7\u65f6\u5e8f\u5982\u4e0b\u56fe\uff0c\u5176\u5b83\u4fe1\u606f\u8bf7\u770b\u89c4\u683c\u4e66\uff0c\u8981\u6ce8\u610f\u9ad8\u4f4e\u7535\u5e73\u7684\u65f6\u95f4\u4e00\u5b9a\u8981\u63a7\u5236\u5728\u89c4\u683c\u4e66\u7684\u8981\u6c42\u8303\u56f4\u5185\u3002WS2812B\u53ef\u4ee5\u7ea7\u8054\uff0c\u6bcf\u4e2a\u706f\u63a5\u6536\u7684\u662f24bit\u6570\u636e\uff08GRB\u989c\u8272\u503c\uff09\uff0cD1\u706f\u5728\u6536\u523024bit\u6570\u636e\u540e\uff0c\u4f1a\u628a\u6570\u636e\u4fdd\u5b58\uff0c\u5982\u679c\u8fd8\u6536\u5230\u6570\u636e\uff0c\u4f1a\u901a\u8fc7DO\u811a\u4f20\u7ed9D2<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.freesion.com\/images\/809\/a1bf301ce6b778097e7888457663b889.png\" alt=\"\" width=\"1200\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.freesion.com\/images\/870\/fa7d03684e2e037be04e348cfd9cdd5e.png\" alt=\"\" width=\"1200\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.freesion.com\/images\/676\/f7154f8bce924cc629acfd7e308da634.png\" alt=\"\" width=\"1200\"\/><figcaption class=\"wp-element-caption\">\u7528STM32F0\u82af\u7247\uff0c48M\u65f6\u949f\uff0c\u9a71\u52a8\u4ee3\u7801\u5982\u4e0b\uff1a<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u5934\u6587\u4ef6\uff1a<\/h2>\n\n\n\n<pre><code class=\"prism language-c\"><span class=\"token comment\">\/************************************************************\nCopyright (C), 2013-2020, XINZHIYIKONG.Co.,Ltd.\n@FileName: WS2812B.h\n@Author  : \u7cca\u8bfb\u866b QQ:570525287\n@Version : 1.0\n@Date    : 2020-12-25\n@Description: WS2812B\u5168\u5f69LED\u706f\u9a71\u52a8\n@Function List:\n@History    : \n&lt;author&gt; &lt;time&gt; &lt;version &gt; &lt;desc&gt;\n\n***********************************************************\/<\/span>\n\n<span class=\"token macro property\">#<span class=\"token directive keyword\">ifndef<\/span> __WS2812B_H<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span>\t__WS2812B_H<\/span>\n\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span> <span class=\"token string\">\"stm32f0xx.h\"<\/span><\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span> <span class=\"token string\">\"sys.h\"<\/span><\/span>\n\n<span class=\"token comment\">\/\/WS2812B IO \u5b9a\u4e49  \u6ce8\u610f\u521d\u59cb\u5316APB\u65f6\u949f\u4e5f\u8981\u4fee\u6539<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> WS2812B_PORT\t\tGPIOA<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> WS2812B_PIN\t\t\tGPIO_Pin_15<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> WS2812B_RCC_AHB\t\tRCC_AHBPeriph_GPIOA  <\/span><span class=\"token comment\">\/\/RCC\u65f6\u949f<\/span>\n\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> WS2812B_Hi()\t\tWS2812B_PORT-&gt;BSRR=WS2812B_PIN\t<\/span><span class=\"token comment\">\/\/GPIO_ResetBits(LED1_PORT, LED1_PIN)<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> WS2812B_Low()\t\tWS2812B_PORT-&gt;BRR=WS2812B_PIN\t<\/span><span class=\"token comment\">\/\/GPIO_SetBits(LED1_PORT, LED1_PIN)<\/span>\n\n<span class=\"token comment\">\/\/\u989c\u8272<\/span>\n<span class=\"token keyword\">typedef<\/span> <span class=\"token keyword\">struct<\/span> color<span class=\"token punctuation\">{<!-- --><\/span>\n\tu8 G<span class=\"token punctuation\">;<\/span>\n\tu8 R<span class=\"token punctuation\">;<\/span>\n\tu8 B<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>Color_TypeDef<span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/------------------------<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> PIXEL_NUM\t59\t<\/span><span class=\"token comment\">\/\/LED\u706f\u7684\u4e2a\u6570<\/span>\n\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Reset<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_WriteColor<\/span><span class=\"token punctuation\">(<\/span>Color_TypeDef <span class=\"token operator\">*<\/span>pColor<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_RefreshPixel<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_FillColor<\/span><span class=\"token punctuation\">(<\/span>u16 start<span class=\"token punctuation\">,<\/span>u16 end<span class=\"token punctuation\">,<\/span>Color_TypeDef <span class=\"token operator\">*<\/span>pColor<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_MovePixel<\/span><span class=\"token punctuation\">(<\/span>u8 dir<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Test<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">endif<\/span> <\/span><span class=\"token comment\">\/* __WS2812B_H *\/<\/span>\n\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u6e90\u6587\u4ef6 <\/h2>\n\n\n\n<pre><code class=\"prism language-c\"><span class=\"token comment\">\/************************************************************\nCopyright (C), 2013-2020, XINZHIYIKONG.Co.,Ltd.\n@FileName: WS2812B.c\n@Author  : \u7cca\u8bfb\u866b QQ:570525287\n@Version : 1.0\n@Date    : 2020-12-25\n@Description: WS2812B\u5168\u5f69LED\u706f\u9a71\u52a8\n@Function List:\n@History    : \n&lt;author&gt; &lt;time&gt; &lt;version &gt; &lt;desc&gt;\n\n***********************************************************\/<\/span>\n\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include<\/span> <span class=\"token string\">\"WS2812B.h\"<\/span><\/span>\n\nColor_TypeDef PixelBuf<span class=\"token punctuation\">[<\/span>PIXEL_NUM<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/\u50cf\u6570\u6570\u636e<\/span>\nuint8_t flag<span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/\u6676\u632f48M,\u6bcf\u4e2anop\u662f20.83ns<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> DELAY_20_8nS\t\t__nop()\t\t<\/span><span class=\"token comment\">\/\/1\u4e2anop\u662f20.8ns<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> DELAY_104nS\t\t\tDELAY_20_8nS;DELAY_20_8nS;DELAY_20_8nS;DELAY_20_8nS;DELAY_20_8nS <\/span><span class=\"token comment\">\/\/5\u4e2anop\u662f104ns<\/span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">define<\/span> Delay_320nS()\t\tDELAY_104nS;DELAY_104nS;DELAY_104nS  <\/span><span class=\"token comment\">\/\/30\u4e2anop<\/span>\n \n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :Delay_850nS\n@Description:\u68c0\u6d4b\u5f00\u5173\u521d\u59cb\u5316\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :T1H T0L \u65f6\u95f4\u5728  580ns~1.6us,\u53d6850ns   \u5b9e\u6d4b855us\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">Delay_850nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\t<span class=\"token comment\">\/\/\u8fdb\u5165\u51fd\u6570\u6240\u7528\u7684\u65f6\u95f4\u7ea6\u4e3a310ns<\/span>\n\tDELAY_104nS<span class=\"token punctuation\">;<\/span>\n\tDELAY_104nS<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">Delay_320nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\tDELAY_20_8nS<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :Delay_300uS\n@Description:\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">Delay_300uS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tuint8_t i<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">--<\/span><span class=\"token punctuation\">)<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token function\">Delay_320nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_Init\n@Description:\u521d\u59cb\u5316\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tGPIO_InitTypeDef GPIO_InitStruct<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">RCC_AHBPeriphClockCmd<\/span><span class=\"token punctuation\">(<\/span>WS2812B_RCC_AHB<span class=\"token punctuation\">,<\/span> ENABLE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\tGPIO_InitStruct<span class=\"token punctuation\">.<\/span>GPIO_Pin <span class=\"token operator\">=<\/span> WS2812B_PIN <span class=\"token punctuation\">;<\/span>\n\tGPIO_InitStruct<span class=\"token punctuation\">.<\/span>GPIO_Mode <span class=\"token operator\">=<\/span> GPIO_Mode_OUT<span class=\"token punctuation\">;<\/span>\n\tGPIO_InitStruct<span class=\"token punctuation\">.<\/span>GPIO_OType <span class=\"token operator\">=<\/span> GPIO_OType_PP<span class=\"token punctuation\">;<\/span>\n\tGPIO_InitStruct<span class=\"token punctuation\">.<\/span>GPIO_Speed <span class=\"token operator\">=<\/span>GPIO_Speed_Level_3<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">GPIO_Init<\/span><span class=\"token punctuation\">(<\/span>WS2812B_PORT<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&amp;<\/span>GPIO_InitStruct<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token function\">GPIO_SetBits<\/span><span class=\"token punctuation\">(<\/span>WS2812B_PORT<span class=\"token punctuation\">,<\/span> WS2812B_PIN<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_Reset\n@Description:\u590d\u4f4d\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Reset<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\">\/\/\u590d\u4f4d\u51fd\u6570<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\t<span class=\"token function\">WS2812B_Low<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">Delay_300uS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_WriteByte\n@Description:\u5199\u4e00\u4e2a\u5b57\u8282\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_WriteByte<\/span><span class=\"token punctuation\">(<\/span>uint8_t dat<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tu8 i<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>i<span class=\"token operator\">&lt;<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">;<\/span>i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token comment\">\/\/\u5148\u53d1\u9001\u9ad8\u4f4d<\/span>\n\t\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>dat <span class=\"token operator\">&amp;<\/span> <span class=\"token number\">0x80<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\">\/\/1<\/span>\n\t\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t\t<span class=\"token function\">WS2812B_Hi<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\t\t<span class=\"token function\">Delay_850nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/T1H<\/span>\n\t\t\t<span class=\"token function\">WS2812B_Low<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\t\n\t\t\t<span class=\"token function\">Delay_320nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/T1L<\/span>\n\t\t<span class=\"token punctuation\">}<\/span>\n\t\t<span class=\"token keyword\">else<\/span>\t<span class=\"token comment\">\/\/0<\/span>\n\t\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t\t<span class=\"token function\">WS2812B_Hi<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\t\t<span class=\"token function\">Delay_320nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/T0H<\/span>\n\t\t\t<span class=\"token function\">WS2812B_Low<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\t\n\t\t\t<span class=\"token function\">Delay_850nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/T0L<\/span>\n\t\t<span class=\"token punctuation\">}<\/span>\n\t\tdat<span class=\"token operator\">&lt;&lt;=<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_WriteColor\n@Description:\u5199\u51651\u4e2a24bit\u989c\u8272\u6570\u636e\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_WriteColor<\/span><span class=\"token punctuation\">(<\/span>Color_TypeDef <span class=\"token operator\">*<\/span>pColor<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\t<span class=\"token function\">WS2812B_WriteByte<\/span><span class=\"token punctuation\">(<\/span>pColor<span class=\"token operator\">-&gt;<\/span>G<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">WS2812B_WriteByte<\/span><span class=\"token punctuation\">(<\/span>pColor<span class=\"token operator\">-&gt;<\/span>R<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">WS2812B_WriteByte<\/span><span class=\"token punctuation\">(<\/span>pColor<span class=\"token operator\">-&gt;<\/span>B<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_RefreshPixel\n@Description:\u66f4\u65b0\u663e\u793a\n@Input      :\u65e0\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_RefreshPixel<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tu8 i<span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>i<span class=\"token operator\">&lt;<\/span>PIXEL_NUM<span class=\"token punctuation\">;<\/span>i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token function\">WS2812B_WriteColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/----------------------------------------<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Test<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tu8 i<span class=\"token punctuation\">;<\/span>\n\tColor_TypeDef temp<span class=\"token punctuation\">;<\/span>\n\ttemp<span class=\"token punctuation\">.<\/span>B <span class=\"token operator\">=<\/span> <span class=\"token number\">0x50<\/span><span class=\"token punctuation\">;<\/span>\n\ttemp<span class=\"token punctuation\">.<\/span>R <span class=\"token operator\">=<\/span> <span class=\"token number\">0x60<\/span><span class=\"token punctuation\">;<\/span>\n\ttemp<span class=\"token punctuation\">.<\/span>G <span class=\"token operator\">=<\/span> <span class=\"token number\">0x70<\/span><span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token keyword\">for<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token operator\">=<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>i<span class=\"token operator\">&lt;<\/span><span class=\"token number\">60<\/span><span class=\"token punctuation\">;<\/span>i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token function\">WS2812B_WriteColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/\u6d4b\u8bd5\u5ef6\u65f6\u65f6\u95f4<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_Test2<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\t<span class=\"token function\">WS2812B_Hi<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">Delay_850nS<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">WS2812B_Low<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/============================================================================<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span>Color_TypeDef <span class=\"token operator\">*<\/span>pDst<span class=\"token punctuation\">,<\/span>Color_TypeDef <span class=\"token operator\">*<\/span>pScr<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tpDst<span class=\"token operator\">-&gt;<\/span>R <span class=\"token operator\">=<\/span> pScr<span class=\"token operator\">-&gt;<\/span>R<span class=\"token punctuation\">;<\/span>\n\tpDst<span class=\"token operator\">-&gt;<\/span>G <span class=\"token operator\">=<\/span> pScr<span class=\"token operator\">-&gt;<\/span>G<span class=\"token punctuation\">;<\/span>\n\tpDst<span class=\"token operator\">-&gt;<\/span>B <span class=\"token operator\">=<\/span> pScr<span class=\"token operator\">-&gt;<\/span>B<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_FillColor\n@Description:\u586b\u5145\u989c\u8272\n@Input      :start\uff1a\u5f00\u59cb\u4f4d\u7f6e;end:\u7ed3\u675f\u4fe1\u7f6e;pColor:\u989c\u8272\u503c\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_FillColor<\/span><span class=\"token punctuation\">(<\/span>u16 start<span class=\"token punctuation\">,<\/span>u16 end<span class=\"token punctuation\">,<\/span>Color_TypeDef <span class=\"token operator\">*<\/span>pColor<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>start <span class=\"token operator\">&gt;<\/span> end<span class=\"token punctuation\">)<\/span> <span class=\"token comment\">\/\/\u4ea4\u6362\u4f4d\u7f6e<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\tu16 temp<span class=\"token punctuation\">;<\/span>\n\t\ttemp <span class=\"token operator\">=<\/span> start<span class=\"token punctuation\">;<\/span>\n\t\tstart <span class=\"token operator\">=<\/span> end<span class=\"token punctuation\">;<\/span>\n\t\tend <span class=\"token operator\">=<\/span> temp<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n\n\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>start <span class=\"token operator\">&gt;=<\/span> PIXEL_NUM<span class=\"token punctuation\">)<\/span><span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/\u8d85\u51fa\u8303\u56f4<\/span>\n\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>end <span class=\"token operator\">&gt;=<\/span> PIXEL_NUM<span class=\"token punctuation\">)<\/span>end <span class=\"token operator\">=<\/span> PIXEL_NUM<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token comment\">\/\/\u586b\u5145\u989c\u8272\u503c<\/span>\n\t<span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>start <span class=\"token operator\">&lt;=<\/span> end<span class=\"token punctuation\">)<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>start<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>pColor<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\tstart<span class=\"token operator\">++<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :WS2812B_MovePixel\n@Description:\u5faa\u73af\u79fb\u52a8\u50cf\u7d20\u989c\u8272\n@Input      :dir:\u65b9\u5411;\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">WS2812B_MovePixel<\/span><span class=\"token punctuation\">(<\/span>u8 dir<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tColor_TypeDef temp<span class=\"token punctuation\">;<\/span>\n\tu8 i<span class=\"token punctuation\">;<\/span>\n\n\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>dir<span class=\"token punctuation\">)<\/span> <span class=\"token comment\">\/\/\u5411\u5de6\u79fb\u52a8<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>temp<span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>PIXEL_NUM<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n\t\ti <span class=\"token operator\">=<\/span> PIXEL_NUM<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\n\t\t<span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span>\n\t\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t\t <span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\t\t i<span class=\"token operator\">--<\/span><span class=\"token punctuation\">;<\/span>\n\t\t<span class=\"token punctuation\">}<\/span>\n\t\t<span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n\t<span class=\"token keyword\">else<\/span>  <span class=\"token comment\">\/\/\u5411\u53f3\u79fb\u52a8<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>temp<span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n\t\ti <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\n\t\t<span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;<\/span> <span class=\"token punctuation\">(<\/span>PIXEL_NUM<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n\t\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t\t<span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">+<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\t\ti<span class=\"token operator\">++<\/span><span class=\"token punctuation\">;<\/span>\n\t\t<span class=\"token punctuation\">}<\/span>\n\t\t<span class=\"token function\">Copy_Color<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>PixelBuf<span class=\"token punctuation\">[<\/span>PIXEL_NUM<span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token punctuation\">}<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token comment\">\/\/----------------------------------END OF FILE------------------------------<\/span>\n\n<\/code><\/pre>\n\n\n\n<pre><code class=\"prism language-c\"><span class=\"token comment\">\/*---------------------------------------------------------------------------\n@Function   :main\n@Description:\u4e3b\u51fd\u6570\n@Input      :\n@Retrun     :\u65e0\n@Others     :\n----------------------------------------------------------------------------*\/<\/span>\n<span class=\"token keyword\">int<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">void<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<!-- --><\/span>\n\tColor_TypeDef temp<span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">HardWare_Init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\n\t<span class=\"token function\">WS2812B_Init<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\t\n\ttemp<span class=\"token punctuation\">.<\/span>R <span class=\"token operator\">=<\/span> <span class=\"token number\">0x00<\/span><span class=\"token punctuation\">;<\/span>\n\ttemp<span class=\"token punctuation\">.<\/span>G <span class=\"token operator\">=<\/span> <span class=\"token number\">0xff<\/span><span class=\"token punctuation\">;<\/span>\n\ttemp<span class=\"token punctuation\">.<\/span>B <span class=\"token operator\">=<\/span> <span class=\"token number\">0x80<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token function\">WS2812B_FillColor<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">,<\/span><span class=\"token operator\">&amp;<\/span>temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t<span class=\"token keyword\">while<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\n\t<span class=\"token punctuation\">{<!-- --><\/span>\n\t\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">SysGetSignal_ms<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">,<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\">\/\/20ms<\/span>\n\t\t<span class=\"token punctuation\">{<!-- --><\/span>\t\t\n\t\t\t<span class=\"token function\">WS2812B_MovePixel<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\t\t<span class=\"token function\">WS2812B_RefreshPixel<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\t\t<span class=\"token punctuation\">}<\/span>\n\t<span class=\"token punctuation\">}<\/span>\t\n<span class=\"token punctuation\">}<\/span>\t\n<\/code><\/pre>\n\n\n\n<p>\u4ee3\u7801\u5b9e\u73b0\u4e86\u5faa\u73af\u79fb\u52a8\u7684\u6d41\u6c34\u706f\u529f\u80fd\uff0c\u70b9\u4eae\u6548\u679c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.freesion.com\/images\/695\/a9fade5c162213696f87c1d019b5f847.png\" alt=\"\" width=\"1200\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-center\">\u8f6c\u8f7d\u81ea<a rel=\"noreferrer noopener\" href=\"https:\/\/www.freesion.com\/article\/1002597996\/\" target=\"_blank\">: \u7070\u4fe1\u7f51<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6807\u7b7e\uff1a&nbsp;Arduino \u5f00\u53d1\u6559\u7a0b&nbsp;&nbsp;ESP32 \u5b66&hellip;<\/p>\n","protected":false},"author":1,"featured_media":6637,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[288,147,289],"post_series":[],"_links":{"self":[{"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/posts\/6643"}],"collection":[{"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nvled.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6643"}],"version-history":[{"count":5,"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/posts\/6643\/revisions"}],"predecessor-version":[{"id":6706,"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/posts\/6643\/revisions\/6706"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nvled.com\/index.php?rest_route=\/wp\/v2\/media\/6637"}],"wp:attachment":[{"href":"https:\/\/www.nvled.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nvled.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nvled.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6643"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/www.nvled.com\/index.php?rest_route=%2Fwp%2Fv2%2Fpost_series&post=6643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}