WS2812B彩灯
发布时间
阅读量:
阅读量
目录
1、介绍
2、参数
3、引脚功能
4、应用电路
5、Code
1、介绍

WS2812作为智能化控制的led光源,在一个采用5050封装的组件中集成了必要的电路组件。
- 集成设计:采用集成化设计技术,在单个芯片中融合了控制电路与RGB芯片
- 信号重构:具备自动信号重构功能的内部电路模块
- 失压保护:配备自动断开机制的电源丢失重置模块
- 颜色亮度:支持三原色亮度调节,并提供256级灰度调节选项;扫描频率不低于400Hz/s
- 串行传输:采用单线串口传输信号的方式,在空间距离超过5米的情况下仍可正常工作
- 刷新控制:系统设定下刷新率不低于30fps;低速模式下串联数量不少于512点;高速模式下串联数量不少于1024点
- 数据速率:支持高达800千比特每秒的数据传输速度
- 品质保证:呈现高度一致的颜色并具有良好的性价比优势
- 应用场景:广泛应用于全彩模块灯饰、柔性灯条及室内/室外不规则屏等LED装饰照明系统
- 工作电压:额定工作电压范围设定在6.0至7.0伏特之间;红绿蓝LED分别工作于1.8-2.2V、3.0-3.2V及3.2-3.4V电压区间
- 通信协议:系统采用NZR通信协议,在开机复位状态下通过24位数据指令初始化所有像素的状态设置
2、参数

3、引脚功能


| 序号 | 符号 | 功能 |
|---|---|---|
| 1 | GND | 电源地 |
| 2 | DO | 数据输出端 |
| 3 | VDD | 电源:5V |
| 4 | DI | 数据输入端 |
4、应用电路

设计建议:

在实际应用电路中, 为了防止因测试操作导致的瞬时高压损坏 IC 的电源模块及其信号接口, 应在信号输入与输出端并联于其上, 以便提供电流限制保护
为确保各IC芯片正常运行,产品两端所并接的退偶电容通常情况下不建议省略.
产品的信号输入及输出端必须串接保护用的电阻R1或R2。由于传输介质和线路长度的不同,在信号线两端串联的保护电阻会有细微差别。R1或R2的阻值主要取决于级联灯珠的数量,在这种情况下随着级联灯珠数量的增加(即级联次数增多),R1或R2的阻值相应减小。具体取值则根据实际情况确定,并建议选用500Ω至2kΩ之间的阻值范围;其中特别强调的是在电路设计中应将其中一个端子接地以确保安全可靠。
5、Code
注:在 platformio.ini 文件中加入库:
lib_deps =
fastled/FastLED @ ^3.6.0
cs
#include <Arduino.h>
#include <FastLED.h>
#define NUM_LEDS 15 // 串联灯珠数量
#define DATA_PIN 13 // 信号引脚
CRGB leds[NUM_LEDS];
void setup()
{
// Uncomment/edit one of the following lines for your leds arrangement.
// ## Clockless types ##
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); // GRB ordering is assumed
// FastLED.addLeds<SM16703, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1829, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1812, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1904, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS2903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
// FastLED.addLeds<WS2852, DATA_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
// FastLED.addLeds<GS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SK6812, DATA_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
// FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA106, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<PL9823, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2813, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GE8822, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD1886, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD1886_8BIT, DATA_PIN, RGB>(leds, NUM_LEDS);
// ## Clocked (SPI) types ##
// FastLED.addLeds<LPD6803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // BGR ordering is typical
// FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // BGR ordering is typical
// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // BGR ordering is typical
// FastLED.addLeds<SK9822, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS); // BGR ordering is typical
}
void loop()
{
// 显示红色
for(int i=0; i<NUM_LEDS; i++)
{
leds[i] = CRGB::Red;
}
FastLED.show();
delay(500);
// 显示绿色
for(int i=0; i<NUM_LEDS; i++)
{
leds[i] = CRGB::Green;
}
FastLED.show();
delay(500);
// 显示蓝色
for(int i=0; i<NUM_LEDS; i++)
{
leds[i] = CRGB::Blue;
}
FastLED.show();
delay(500);
// 不显示
for(int i=0; i<NUM_LEDS; i++)
{
leds[i] = CRGB::Black;
}
FastLED.show();
delay(500);
}
cs

烧录:

全部评论 (0)
还没有任何评论哟~
