Arduino 控制WS2812 LED灯条

传统的LED限制总是很多,比如需要很多的引脚。所以有一种很好的解决方案是用灯条。理论上这种灯条可以通过通讯,用一根数据总线可以控制达到无上限个数的RGB-LED灯珠,并且在数量在1024以下时,延迟是不可察觉的(使用手册可查)。

主要功能

通过Arduino IDE 代码输入R,G,B不同值的组合,让LED灯条产生不同的颜色;这个程序将让LED实现颜色的随机变换。

工作模式

所需库文件是Adafruit_NeoPixel.h,可以在Arduino 库管理器中下载。

组件

– 1 * Adeept UNO板

– 1 * USB电缆

– 1 * WS2812LED灯条

– 1 *跳线

程序

步骤1:如下图所示连接电路。

步骤2:上传程序

  1. 下载库文件h。
  2. 该函数led_numbers中,控制的是点亮多少个全彩灯珠,如果你想改变灯珠点亮的个数你可以在这里进行修改。PIN表示的是与开发板所连的第几个端口。
  3. 关于NEO_GRB+NEO_KHZ800,这说明了与开发板所连的灯条的具体类型,如果你所使用的灯珠花样不同请选用NEO_KHZ400+NEO_RGB。
  4. begin()准备对灯条进行数据发送;关于strip.setBrightness()这个函数其主要是对灯珠亮度进行输出,最大值为255。
  5. 设置R,G,B的值为随机的数,从而产生随机的颜色;setPixelColor(i, color);在这个函数中i表示的是第几个灯珠进行点亮,函数中strip.Color(R, G, B);是对灯条的颜色进行设置;strip.show();这个函数是对上述的颜色的设置进行一次输出。
/*************************************
File name:Adeept_led_strip
Description:
Website:www.addept.com
E-mail:support@addept.com
Author:felix
Date:2019/6/18
*************************************/
#include <Adafruit_NeoPixel.h>    
#define led_numbers  12  
#define PIN  8                                          
Adafruit_NeoPixel strip = Adafruit_NeoPixel(led_numbers, PIN, NEO_GRB + NEO_KHZ800);//NEO_KHZ400+NEO_RGB
void setup() {
  strip.begin();
  strip.setBrightness(50);
}

void loop() {
  int R=random(0,255);
  int G=random(0,255);
  int B=random(0,255);
  for(int i=0;i<12;i++){
    strip.setPixelColor(i,strip.Color(R,G,B));
    strip.show();
    delay(50);
  }
}

步骤3:实验效果:

 

跳至工具栏