const byte pins[]={2,3,4,5,6};
struct LED{
byte pin;
unsigned int interval;
unsigned long previousMillis;
};
LED led2={2,2000,0};
LED led3={3,3000,0};
LED led4={4,4000,0};
LED led5={5,5000,0};
LED led6={6,6000,0};
int lightless=0;
int lightfull=255;
LED leds[5]={led2,led3,led4,led5,led6};
byte ledsLength=sizeof(leds)/sizeof(leds[0]);
void setup(){
Serial.begin(9600);
for (LED led :leds){
pinMode(led.pin,OUTPUT);
}
}
void loop(){
multitaskLED();
}
void onLED(){
unsigned long interval=1000;
for (byte pin:pins){
if (millis()>=pin*interval)
digitalWrite(pin,HIGH);
}
}
void multitaskLED() {
unsigned long currentMillis = millis();
for (byte i=0; i<ledsLength;i++) {
if ((currentMillis - leds[i].previousMillis) >= leds[i].interval) {
leds[i].previousMillis = currentMillis;
//digitalWrite(leds[i].pin, !digitalRead(leds [i].pin));
for (int light=lightless;light<=lightfull;light+=3){
unsigned long a;
a=currentMillis;
analogWrite(leds[i].pin,light); //控制pin号引脚所对应灯的亮度
for (int i=0;i<50000;i++)
{
if (currentMillis==(a+6))
break;
}
}
for (int light=lightfull;light>=lightless;light-=3){ //亮度从最大以每次减3的速度减到0
unsigned long b;
b=currentMillis;
analogWrite(leds[i].pin,light); //控制pin号引脚所对应灯的亮度
for (int i=0;i<50000;i++)
{
if (currentMillis==(b+6))
break;
}
}
}
}
}