WS2812B彩灯

目录

1、介绍

2、参数

3、引脚功能

4、应用电路

5、Code


1、介绍

WS2812是一种智能控制LED灯源,集成了控制电路和RGB芯片在一个5050封装组件中。它的主要特点和技术规格如下:

  • 集成设计:WS2812将控制电路和RGB芯片集成在同一个封装中,大大简化了电路设计和安装过程
  • 信号重塑电路:内置信号重塑电路,可以保证波形在每次传递到下一个驱动器时不会发生失真累积
  • 电源丢失重置电路:内置的电源丢失重置电路确保了在电源失效的情况下灯具能够正确重置
  • 颜色和亮度:每个像素可以在三原色中实现256级亮度控制,总共可以显示16777216种颜色。扫描频率不低于400Hz/s
  • 串联传输信号:通过单线串联端口传输信号,任意两点之间的距离超过5米时,信号传输不需要增加电路
  • 刷新率:在30fps的刷新率下,低速模式下的串联数量不少于512点,高速模式不少于1024点
  • 数据传输速率:以800Kbps的速率发送数据
  • 一致性和性价比:灯光的颜色具有很高的一致性,并且成本效益高
  • 应用范围:广泛应用于全彩模块、柔性灯条、室内/室外LED不规则屏幕等LED装饰照明
  • 电气特性:功率供应电压为6.0~7.0V。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 内部电源及信号输入输出脚,应在信号输入及输出端串接保护电阻。

1.为了使各 IC 芯片间更稳定工作,产品两端所并的退偶电容一般不建议省略;

2.产品的信号输入及输出端必需串接保护电阻 R1/R2,因线材及传输距离不同,在信号线两端串接的保护电阻会略有不同;R1/R2 的大小取决于级联灯珠的数量,级联数量越多,则 R1/R2 越小,灯珠间传输距离长,一般建议在20-2KΩ之间取值,建议通常建议取值在 500 欧左右;以实际使用情况定,R2可接地。

5、Code

注:在 platformio.ini 文件中加入库:

cs 复制代码
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);
}

烧录:

相关推荐
马浩同学39 分钟前
【ESP32】Arduino开发 | Timer定时器+定时器闹钟例程
c语言·单片机·嵌入式硬件·mcu
EVERSPIN2 小时前
分享国产RISC-V单片机通用
单片机·嵌入式硬件·risc-v
浅陌pa3 小时前
05:(寄存器开发)定时器一
stm32·单片机·嵌入式硬件
TNT_JQR4 小时前
电子信息类专业技术学习及比赛路线总结(大一到大三)
单片机·嵌入式硬件·学习
jmlinux6 小时前
环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失
c语言·stm32·单片机·嵌入式硬件
江山如画,佳人北望7 小时前
智能平衡移动机器人-平台硬件电路
单片机·嵌入式硬件
江将好...8 小时前
定时器实验(Proteus 与Keil uVision联合仿真)
单片机·嵌入式硬件
地球空间-技术小鱼8 小时前
嵌入式系统学习
嵌入式硬件·学习
物随心转8 小时前
中断系统的原理
单片机·嵌入式硬件
EVERSPIN19 小时前
分享国产32位单片机的电机控制方案
单片机·嵌入式硬件