WS2812B可寻址RGB LED |使用Arduino进行控制

在这个项目中,我们将看看一个称为WS2812B可寻址LED的有趣产品。例如,它们是可单独寻址的RGB LED,并且例如由Adafruit这样的不同名称称为Neopixel。在本教程中,我们将了解WS2812B LED,其内部结构和施工以及如何使用Arduino控制可单独寻址的LED。

介绍

如果您已经制作了某种LED相关项目,那么您可能已经使用了离散LED(通过孔或SMD)。这些LED可以是单色LED或RGB LED。

离散LED的主要缺点是,如果在数组中使用它们,则会失去单独控制它们的权限。例如,如果使用晶体管将三个或四个LED连接到Arduino的单个引脚,则阵列中的所有LED都将具有相同的行为,即亮度控制或颜色变化。

另一种情况是您也可能使用过LED带灯用于圣诞节装饰或常规家庭照明。您可能已经观察到即使在昂贵的LED条带灯中,您也没有该功能来控制各个LED。

如果您的目标是控制条带中的单个LED,那么WS2812B可寻址RGB LED是您的答案。

WS2812B可寻址LED

WS2812B可寻址LED条带是智能光源,该智能光源包含相同包装中的控制IC和RGB LED,通常在SMD 5050外形。以下图像显示了一条WS2812B LED。

WS2812B可寻址LED特色图片

乍一看,它看起来像一个普通的LED条带。但在仔细检查后,您可以找到集成的WS2812B LED控制IC集成到SMD 5050 RGB LED封装中。以下吹动图像显示相同。

WS2812B可寻址LED电路图

各个WS2812B LED块具有四个引脚,即VDD,VSS(GND),DIN和DOUT。这些引脚的功能非常简单,下表提供了销钉的简单功能描述。

别针

功能

vdd.

LED电源

vss.

地面

din

控制数据信号输入

d

控制数据信号输出

WS2812B IC的电源也通过VDD引脚提供。

WS2812B LED应用电路

要了解如何单独控制WS2812B LED,则以下应用电路将是有用的。所有WS2812B LED都以级联方式连接,其中第一LED的DO连接到第二LED的DIN等。

但是第一个LED必须通过与Arduino等微控制器的DIN引脚接收数据。以下图像显示了典型的应用电路框图。

WS2812B可寻址LED应用程序

WS2812B LED使用的数据传输协议是NRZ模式。WS2812B LED阵列的第一个DIN端口从微控制器接收数据。各个像素的数据为24位,由每个8位的单个红色,绿色和蓝色LED控制数据组成。数据的顺序必须是GRB,24位数据的组成如下所示。请注意,首先发送高位数据。

WS2812B可寻址LED 24位数据

一旦第一WS2812B块接收到第一24位数据,就会将数据发送到其内部锁存器以以进一步解码。剩余数据由其信号重塑和放大电路重新成形,并通过DO引脚传递到级联中的下一个像素。

如何使用Arduino控制WS2812B LED?

现在,让我们继续使用Arduino控制WS2812B LED阵列。在进一步设计原理图之前,我们需要解决一个重要的事情,即对项目的电源。

每个WS2812B LED像素具有三个LED和控制IC。因此,一个像素的当前要求约为60 mA。如果您有一个包含20个WS2812B可单独寻址LED的条带,则总电流要求为20 * 60 mA = 1.2A。

这不仅仅是Arduino可以通过USB端口(最多可提供300 mA)或通过5V桶(最多900 mA)提供。

因此,上电项目的最佳方法是Arduino和WS2812B LED条带有外部5V电源,可以提供足够的电流。

现在项目的电源部分很清楚,我们现在可以继续进行项目的原理图。

电路原理图

以下图像显示了Arduino Uno和WS2812B之间的连接RGB LED条带。5V Arduino UNO和LED连接到外部电源以及GND(VSS)。

LED条带的DIN引脚通过330Ω电阻连接到Arduino的数字IO引脚7。

WS2812B可寻址LED电路图

所需的组件

  • Arduino Uno.
  • WS2812B LED
  • 5V电源(最小2A)
  • 330Ω电阻

编程Arduino.

第一步编程Arduino.是下载一个名为“错配”的支持库。您可以从以下链接下载库:“错了图书馆“。

提取zip文件的内容,并将文件夹重命名为“错配”。将此文件夹移动到Arduino的库文件夹。

代码

#include  #define ledpin 7 #define numofleds 10 crgb LED [numofleds];void setup(){fastled.addleds (LED,Numofleds);void循环(){for(int i = 0; i <= 9; i ++){LED [i] = CRGB(0,0,255);fitled.show();延迟(40);for(int i = 9; i> = 0; i--){LED [i] = CRGB(255,0,0);fitled.show();延迟(40);}}

结论

本教程沿着项目提供了一个简单的WS2812B可单独寻址LED的简单介绍,以展示如何使用Arduino控制WS2812B LED。如果您了解这些基础知识,那么您可以实现各种项目。

2回复

  1. 如何使用按钮使第一LED闪烁闪烁。然后停下来
    我有6个按钮,我希望每个按钮做一个动作,然后停止,等待另一个按钮被按下。但每个按钮都有一个设置的程序。
    我不知道是否有可能。
    谢谢你

发表评论

您的电子邮件地址不会被公开。

电子机器Favicon.
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map