Arduino WS2812B LED灯带可单独控制每个LED的亮度和颜色,提供了一种简单而酷炫的LED效果体验。
WS2812B LED灯带以串联方式组合LED灯,内嵌有放大驱动威廉希尔官方网站 、振荡器和电压可编程控制芯片,可寻址,可通过一个单线接口通讯。这意味着,用户可通过Arduino板子上的一个数字引脚,同时控制多个LEDs。
	DC5V WS2812B 5米可寻址LED灯带特点如下:
	输入电压:DC 5V
	功率:60LEDS/M -18watt/M
	FPCB宽度:60LEDS/M—-10mm
	颜色:全色RGB,梦幻流彩
	长度:定制
	IC类型:内嵌
	LED类型:SMD 5050
	PCB颜色:白色
	防护:IP65级防水
首先,按照威廉希尔官方网站 图把Arduino插接到面包板上,连接电阻器和电容器后接通5V电源。其中,Arduino的#2数字引脚先通过一个330欧姆电阻器,再通过跳线连接到LED灯带中间的Din引脚。

接下来,下载 FastLED 库,在Arduino IDE中打开库。
键入FastLED,点击安装。
安装成功后,接着上传 FastLED header。

然后,设置LED数据引脚,本项目中为2。LED灯带的LED数可达60,本项目选择12。
	
	#include 
	#define LED_PIN 2
	#define NUM_LEDS 12
现在,创建阵型CRGB,长度为所使用的LEDs数量。
	CRGB leds[NUM_LEDS];
	通过RGB校验控制ws2812,本例中NUM LEDs为12。
FastLED.addLeds(leds, NUM_LEDS);,>
	设置最大电压(5v)和最大电流(500mA),让不会消耗Arduino太大电流。
	FastLED.setMaxPowerInVoltsAndMilliamps(5, 500);
	每次上传一组新代码时,通过FastLED.clear() 和 FastLED.show() 刷新LEDs。
	FastLED.clear();
	FastLED.show();
按照常规顺序校准LEDs:即红 - 绿 - 蓝。如果实际显示的颜色顺序与FastLED.show()函数所写不一致,就对修改函数的顺序。
Arduino WS2812B LED灯带校准的代码如下:
	#include 
	#define LED_PIN 2
	#define NUM_LEDS 12
CRGB leds[NUM_LEDS];
	void setup() {
	 FastLED.addLeds(leds, NUM_LEDS);
	 FastLED.setMaxPowerInVoltsAndMilliamps(5, 500);
	 FastLED.clear();
	 FastLED.show();
	},>
	void loop() {
	 // RED Green Blue
	for (int i=0; i{
	   leds[i] = CRGB(0, 255-2*i, 20*i );
	   FastLED.setBrightness(6*i);
	   FastLED.show();
	   delay (50);
	} 
	for (int i=NUM_LEDS; i> 0; i-- )
	{
	   leds[i] = CRGB(20*i, 0, 255-20*i );
	   FastLED.setBrightness(60-2*i);
	   FastLED.show();
	       delay (50);;>
	}
	}
	
	校准后,LED灯带的所有LED都真是显示了函数赋值,即红色。

Arduino WS2812B LED灯带全部显示红色代码:
	#include 
	#define LED_PIN 2
	#define NUM_LEDS 12
	CRGB leds[NUM_LEDS];
	void setup() {
	FastLED.addLeds(leds, NUM_LEDS);
	FastLED.setMaxPowerInVoltsAndMilliamps(5, 500);
	FastLED.clear();
	FastLED.show();,>
}
	void loop() {
	 // RED Green Blue
	for (int i=0; ileds[i] = CRGB(255, 0, 0 );
	FastLED.show();
	 };>
	
	把代码上传到Arduino后,所有LED都将显示为红色。
如果改变函数中的第二个值为255,可改变LED的颜色为绿色:
leds[i] = CRGB(0, 255, 0 )
如果希望得到混色效果,如紫色,函数赋值为:leds[i] = CRGB(255, 0, 255 )。上传代码后,灯带就全部显示了紫色。

在保持紫色的同时,如果想让灯带闪烁,需要使用 FastLED.setBrightness() 函数,设置亮度的等级,并从0 逐渐递增。
下面是Arduino WS2812B LED灯带闪烁代码:
	
	#include 
	#define LED_PIN 2
	#define NUM_LEDS 12
CRGB leds[NUM_LEDS];
	
	void setup() {
	FastLED.addLeds(leds, NUM_LEDS);
	FastLED.setMaxPowerInVoltsAndMilliamps(5, 500);
	FastLED.clear();
	FastLED.show();,>
}
	void loop() {
	 // RED Green Blue
	for (int i=0; i{
	leds[i] = CRGB(255, 0, 255 );
	FastLED.setBrightness(2*i);
	FastLED.show();
	delay (20);
	} 
	for (int i=NUM_LEDS; i> 0; i-- )
	{
	leds[i] = CRGB(255, 0, 255 );
	FastLED.setBrightness(2*i);
	FastLED.show();
	delay (20);;>
	}
	}
上传上述代码后,就获得了闪烁效果。但是,这个闪烁实在是太快了,这就需要增加时延,获得理想的闪烁效果。
最后,让我们实现灯带从左向右,从绿向蓝渐变。将绿色RGB取值每个循环减小20,经过12次循环这个值就接近0,颜色就成为蓝色。
	for (int i=0; i{
	leds[i] = CRGB(0, 255-2*i, 20*i );
	FastLED.setBrightness(6*i);
	FastLED.show();
	delay (50);
	};>
再从红色开始循环……

这样,Arduino WS2812B LED灯带就按照我们希望的旋律和效果开始闪烁,代码如下:
	#include 
	#define LED_PIN 2
	#define NUM_LEDS 12
CRGB leds[NUM_LEDS];
	
	void setup() {
	FastLED.addLeds(leds, NUM_LEDS);
	FastLED.setMaxPowerInVoltsAndMilliamps(5, 500);
	FastLED.clear();
	FastLED.show();,>
}
	void loop() {
	 // RED Green Blue
	for (int i=0; i{
	leds[i] = CRGB(0, 255-2*i, 20*i );
	FastLED.setBrightness(6*i);
	FastLED.show();
	delay (50);
	} 
	for (int i=NUM_LEDS; i> 0; i-- )
	{
	leds[i] = CRGB(20*i, 0, 255-20*i );
	FastLED.setBrightness(60-2*i);
	FastLED.show();
	delay (50);;>
	}
	}
                        电子发烧友App
                    
                
                
          
        
        











           
            
            
                
            
评论