根据项目要求需要做出灯带呼吸效果,初步建立了一个代码,可以更改几个变量来设置呼吸灯带的颜色,呼吸时长和呼吸深度。为了方便可读,只保留了呼吸灯部分。灯带分别有3个引脚,分别是VCC正极,GND负极和DIN信号。只要把正负极接好,把DIN口接到Arduino的D2口就可以运行。
附上图片和代码,(注意,这灯带是我用一个个灯珠单独连接的,真正需要看的先只有单片机上的三条线)
#include<FastLED.h>
//LED定义
#define NUM_LEDS1 100
#define ledPin1 2
CRGB leds1[NUM_LEDS1];
//LED参数
float r1=10,g1=255,b1=10;//胸甲脖子灯颜色
float r2=r1,g2=g1,b2=b1;
int ledBkTime=30;//led呼吸时长
//延时
void setup()
{
//LED设置
FastLED.addLeds<WS2812,ledPin1,RGB>(leds1,NUM_LEDS1);
FastLED.setMaxPowerInVoltsAndMilliamps(5,1500);//5V 1500mA
//这两个分别是灯带清屏和灯带刷新FastLED.clear();FastLED.show();
}
void loop()
{
for(int i=0;i<ledBkTime;i++)
{
LEDLI();
RGBDOW();
}
for(int i=0;i<ledBkTime;i++)
{
LEDLI();
RGBUP();
}
}
void LEDLI()
{
for(int i=0;i<100;i++)
{
leds1[i]=CRGB(g2,r2,b2);
}
FastLED.show();
delay(50);
}
void RGBDOW()
{
r2=r2-r1/ledBkTime;g2=g2-g1/ledBkTime;b2=b2-b1/ledBkTime;
}
void RGBUP()
{
r2=r2+r1/ledBkTime;g2=g2+g1/ledBkTime;b2=b2+b1/ledBkTime;
}