Arduino控制RGB灯(WS2812B)

Posted 跋扈洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino控制RGB灯(WS2812B)相关的知识,希望对你有一定的参考价值。

Arduino控制RGB灯

RGB灯、WS2812B介绍

RGB灯是以三原色共同交集成像,此外,也有蓝光LED配合黄色荧光 粉,以及紫外LED配合RGB荧光粉,整体来说,这两种都有其成像原理。某些LED背光板出现的颜色特别清楚而鲜艳,甚至有高画质电视的程度,这种情形,正是RGB的特色,标榜红就是红、 绿就是绿、蓝就是蓝的特性,在光的混色上,具备更多元的特性。
我们常常利用RGB灯进行一个灯不同颜色的显示的功能。可以用来指示不同的状态,在平时开发中非常普遍。
WS2813B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。

软件准备

  1. Arduino IDE
  2. FastLED库

程序代码

#include <FastLED.h>
#define NUM_LEDS 1
#define DATA_PIN 5
#define CLOCK_PIN 13
CRGB leds[NUM_LEDS];
void setup()  
    FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  


void loop()  
  //灯珠显示红色
  leds[0] = CRGB::Red;
  FastLED.show();
  delay(1000);
  // 灯珠显示绿色
  leds[0] = CRGB::Green;
  FastLED.show();
  delay(1000);
  // 灯珠显示蓝色
  leds[0] = CRGB::Blue;
  FastLED.show();
  delay(1000);

功能演示



后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。
或者关注公众号。

编写不易,感谢支持。

以上是关于Arduino控制RGB灯(WS2812B)的主要内容,如果未能解决你的问题,请参考以下文章

Arduino驱动WS2812B呼吸灯效果

rgb全彩LED,apa102比ws2812b好在哪儿

谁知道ws2812的一些参数啊,听说阶新科技也有做这块?谁能解答一下

ESP8266--SDK开发(驱动WS2812B)

在 arduino 上运行 WS2812B 条带

arduino按键rgb七彩灯切换