|
|
参考:《Arduino 从基础到实践》,问题:使LED两端变亮,并向对方LED运动,直到互相碰到,之后返回两端
/*
我这里有八个LED
八的中间数是四、五,所以首端到第四个LED时开始返回;末端的LED到第五个LED时开始返回
*/
byte ledPin[]={6,7,8,9,10,11,12,13};
int delayTime(250);//延迟的时间
unsigned long changeTime;
int k=0;//第一个LED索引值
int m=7;//第八个LED的索引值
int d=1;
int s=-1;
void setup() {
for(int x=0;x<8;x++){ //设置所有的引脚为输出模式
pinMode(ledPin[x],OUTPUT);
}
changeTime=millis();
}
void loop() {
//如果最后一次变灯 已经过去ledDelay毫秒
if((millis()-changeTime)>delayTime){
changeLED();
changeTime=millis();
}
}
void changeLED(){
for(int x=0;x<8;x++){ //关闭所有LED
digitalWrite(ledPin[x],LOW);
}
digitalWrite(ledPin[k],HIGH); //点亮当前LED
digitalWrite(ledPin[m],HIGH); //点亮当前LED
k+=d;
m+=s;
//如果首端的LED到达第四个LED就改变d的值,使LED灯返回首端
if(k==3){
d=-1;
}
//如果到达第一个LED就改变d的值,使LED灯向第四个LED运动
if(k==0){
d=1;
}
//末端的LED如果到达第五个LED就改变m的值,使LED灯返回末端
if(m==4){
s=1;
}
//如果到达第八个LED就改变m的值,使LED灯向第五个LED运动
if(m==7){
s=-1;
}
} |
|