极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14182|回复: 1

使LED两端变亮,并向对方LED运动,直到互相碰到,之后返回两端

[复制链接]
发表于 2016-7-18 17:14:08 | 显示全部楼层 |阅读模式
参考:《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;
}
}
回复

使用道具 举报

发表于 2016-7-18 19:24:22 | 显示全部楼层
学习了,谢谢分享了~~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 07:29 , Processed in 0.035431 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表