项目背景:使LED灯带(5个)两端变亮,并向对方LED运动,直到互相碰到,之后返回两端。
参考:《Arduino 从基础到实践》运行问题:只有两端的灯一直亮,其他灯不亮。
自编程序如下:
byte ledPin[]={9,10,11,12,13};
int ledDelay(1000);
int direction=1;
int currentLED1=0;
int currentLED2=4;
unsigned long changeTime;
void setup() {
for(int x=0;x<5;x++)
{pinMode(ledPin[x],OUTPUT);}
changeTime=millis();
}
void loop() {
if ((millis()-changeTime)>ledDelay)
{ changeLED();
changeTime=millis();
}
}
void changeLED()
{
for(int x=0;x<5;x++)
{ digitalWrite(ledPin[x],LOW);//5只LED灯低平信号,熄灭
}
digitalWrite(ledPin[currentLED1],HIGH);
digitalWrite(ledPin[currentLED2],HIGH);//设当前两端LED高平信号,点亮
currentLED1+=direction;
currentLED2-=direction; //当前值增加为direction表示的值
if(currentLED1==currentLED2 )
{while(currentLED1>0))//设第三个LED为基准点,往两边亮
{ digitalWrite(ledPin[currentLED1],HIGH);
digitalWrite(ledPin[currentLED2],HIGH);
for(int x=0;x<5;x++)
{ digitalWrite(ledPin[x],LOW);//5只LED灯低平信号,熄灭
}
currentLED1-=direction;
currentLED2+=direction;
digitalWrite(ledPin[currentLED1],HIGH);
digitalWrite(ledPin[currentLED2],HIGH);
}
}
}
参考:《Arduino 从基础到实践》运行问题:只有两端的灯一直亮,其他灯不亮。
自编程序如下:
byte ledPin[]={9,10,11,12,13};
int ledDelay(1000);
int direction=1;
int currentLED1=0;
int currentLED2=4;
unsigned long changeTime;
void setup() {
for(int x=0;x<5;x++)
{pinMode(ledPin[x],OUTPUT);}
changeTime=millis();
}
void loop() {
if ((millis()-changeTime)>ledDelay)
{ changeLED();
changeTime=millis();
}
}
void changeLED()
{
for(int x=0;x<5;x++)
{ digitalWrite(ledPin[x],LOW);//5只LED灯低平信号,熄灭
}
digitalWrite(ledPin[currentLED1],HIGH);
digitalWrite(ledPin[currentLED2],HIGH);//设当前两端LED高平信号,点亮
currentLED1+=direction;
currentLED2-=direction; //当前值增加为direction表示的值
if(currentLED1==currentLED2 )
{while(currentLED1>0))//设第三个LED为基准点,往两边亮
{ digitalWrite(ledPin[currentLED1],HIGH);
digitalWrite(ledPin[currentLED2],HIGH);
for(int x=0;x<5;x++)
{ digitalWrite(ledPin[x],LOW);//5只LED灯低平信号,熄灭
}
currentLED1-=direction;
currentLED2+=direction;
digitalWrite(ledPin[currentLED1],HIGH);
digitalWrite(ledPin[currentLED2],HIGH);
}
}
}

