#include <FastLED.h>
#define NUM_LEDS 5 //灯的数量 NUM_LEDS=5
#define DATA_PIN 6//引脚号 6(2-13)
CRGB leds[NUM_LEDS];//第几个灯
void setup() {//程序初始化
delay(2000);
FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);//初始化
Serial.begin(115200);
}
int R=0,G=0,B=0;
int val=0; int i;
void mod1()
{
G=0;
R=255;
B=255;
leds[0] = CRGB(G,R,B);//设置某个灯的状态CRGB(绿,红,蓝)
FastLED.show(); //执行
delay(100);
FastLED.clear(); //释放
G=128;
R=0;
B=255;
leds[1] = CRGB(G,R,B);//设置灯的状态CRGB(R,G,B)
FastLED.show();
delay(500);
FastLED.clear();
G=255;
R=255;
B=0;
leds[2] = CRGB(G,R,B);//设置灯的状态CRGB(R,G,B)
FastLED.show();
delay(500);
FastLED.clear();
G=0;
R=64;
B=255;
leds[3] = CRGB(G,R,B);//设置灯的状态CRGB(R,G,B)
FastLED.show();
delay(500);
FastLED.clear();
G=255;
R=128;
B=64;
leds[4] = CRGB(G,R,B);//设置灯的状态CRGB(R,G,B)
FastLED.show();
delay(500);
FastLED.clear();
}
void mod2(){
for ( i=0;i<5;i++)
{
if(R>128)R=0;
if(G>255)G=0;
if(B>64)B=0;
R=R+10;
G=G+20;
B=B+35;
leds[i] = CRGB(G,R,B);
FastLED.show();
delay(100);
FastLED.clear();
}
}
void mod3()//呼吸灯一次
{
for(int i=0;i<26;i++)
{
/* 红灯渐亮*/
R+=10;
if(R>255)R=255;
// G+=10;
// if(G>255)G=255;
// B+=10;
// if(B>255)B=255;
for(int j=0;j<5;j++)
leds[j]= CRGB(G,R,B);
FastLED.show();
delay(20);
}
for(int i=0;i<26;i++)
{
/* 红灯渐亮*/
R-=10;
if(R<0)R=0;
// G-=10;
// if(G<0)G=0;
// B-=10;
// if(B<0)B=0;
for(int j=0;j<5;j++)
leds[j]= CRGB(G,R,B);
FastLED.show();
delay(10);
}
FastLED.clear();
}
void mod4()//逐次亮,逐次灭
{
for(int i=0;i<5;i++)
{
leds[i]= CRGB(rand()%80,rand()%200,rand()%80);
FastLED.show();
delay(500);
}
for(int j=0;j<5;j++)
{
leds[j]= CRGB(0,0,0);
FastLED.show();
delay(500);
//FastLED.clear();
}
}
void loop()//主函数无限循环循环
{
while (Serial.available() > 0)
{
int v1 = Serial.parseInt();
if (v1>0)
{
val=v1;
Serial.println(v1);
}
}
if( val==1)
{
mod3();
}
else if (val == 2)
{
mod4();
}
// delay(1000);
// delay(1000);
}