专注电子技术学习与研究
当前位置:单片机教程网 >> Arduino >> 浏览文章

Arduino学习-LED跑马灯

作者:快乐的尧   来源:快乐的尧   点击数:  更新时间:2014年07月31日   【字体:

如果要制作LED跑马灯的话,需要:

(1)  10个LED灯(颜色随便)
(2)  面包板及连接线若干根(10根连接LED,一根连接5v)
(3)  1KΩ电阻1个(因为每次只亮一个灯,所以一个电阻就够了,一段连接5V电源正极,一端连接所有LED的正极,书上的例子没好好思考过这个问题,给每个LED串联了一个电阻)
 
 
开始写程序啦:
 
byte ledPin[ ] = {2, 3, 4, 5, 7, 8, 9, 10, 11};     //以LED引脚创建数组
int ledDelay(250);    //变换灯之间的延时,你爱多少写多少(毫秒)
int dir = 1;
int currentLED = 0;
unsigned long changeTime;
void setup() {
    for (int x=0; x<9; x++)    //设置所有引脚为输出模式
    {
      pinMode(ledPin[x], OUTPUT);
    }
    changeTime = millis();
}
void loop()  
{       
  if((millis() - changeTime) > ledDelay)    //如果过了ledDelay毫秒,执行以下程序
  {
    changeLED();
    changeTime = millis();
  }
}
 
void changeLED() {  
  for (int x=0; x<9; x++) {   //关闭所有灯
    digitalWrite(ledPin[x], HIGH);
  }
digitalWrite(ledPin[currentLED], LOW);    //开一个灯
currentLED+=dir;
if (currentLED == 8) {dir = -1;}
if (currentLED == 0) {dir = 1;}     //让灯轮流亮,到底换方向
}
 
 
结果如下
 
这里,函数millis()描述返回Arduino开发板从运行当前程序开始的毫秒数,是一个无符号长整数。不要以为一直数得下去,数到4294967296毫秒就归零继续计数。可4294967296毫秒是什么概念呢?4294967296毫秒-->420万秒多-->7万多分钟-->1千多小时-->约49天多。而millis指的是毫秒。为啥要用毫秒?用秒的话几毫秒不要小数点写死了?
关闭窗口