Arduino学习笔记——LED跑马灯

来源:互联网 发布:java isinteger 编辑:程序博客网 时间:2024/05/25 01:36

最基础的LED跑马灯效果:从一侧到另一侧,然后返回

byte ledPin[] = {4,5,6,7,8,9,10,11,12,13};//为LED引脚创建数组int ledDelay(65);//变化之间的延时int direction = 1;int currentLED = 0;unsigned long changeTime;void setup() {    for (int x = 0; x < 10; x++) {                          pinMode(ledPin[x], OUTPUT);//设置所有引脚为输出模式    }changeTime = millis();}void loop() {//如果距离最后一次变灯已经过去ledDelay毫秒    if ( (millis()-changeTime) > ledDelay) {    changeLED();    //判断LED距离上次改变的时间是否超过一段确定的时间,是为了在需要时允许其他代码在主程序运行。    changeTime = millis();    }void changeLED() {    for (int x = 0; x<10; x++) {    digitalWrite(ledPin[x], LOW);//关闭所有LED    }digitalWrite(ledPin[currentLED], HIGH);//点亮当前的LEDcurrentLED += direction; //当前值增加ditecion表示的数值//如果到达LED末端改变ditection 值if (currentLED ==9) {direction = -1;}if (currentLED ==0) {direction = 1;}}

改变跑马灯变化的速度
添加一个电位计,旋转电位计来改变LED点亮的速度,arduino模拟引脚带有一个10位的模/数转换器,能够读0~5v之间的电压,用0~1023之间的整数表示,分度值是4.9mv,利用引脚读出的数值,在0~1023毫秒之间调整延长时间。

byte ledPin[] = {4,5,6,7,8,9,10,11,12,13};//为LED引脚创建数组int ledDelay(65);//变化之间的延时int direction = 1;int currentLED = 0;unsigned long changeTime;int potPin = 2;//电位计的输入引脚,必须是模拟引脚void setup() {    for (int x = 0; x < 10; x++) {                          pinMode(ledPin[x], OUTPUT);//设置所有引脚为输出模式    }changeTime = millis();}void loop() {ledDelay = analogRead(potPin);//从电位计重读取数值,控制跑马灯变化速度//如果距离最后一次变灯已经过去ledDelay毫秒    if ( (millis()-changeTime) > ledDelay) {    changeLED();    //判断LED距离上次改变的时间是否超过一段确定的时间,是为了在需要时允许其他代码在主程序运行。    changeTime = millis();    }void changeLED() {    for (int x = 0; x<10; x++) {    digitalWrite(ledPin[x], LOW);//关闭所有LED    }digitalWrite(ledPin[currentLED], HIGH);//点亮当前的LEDcurrentLED += direction; //当前值增加ditecion表示的数值//如果到达LED末端改变ditection 值if (currentLED ==9) {direction = -1;}if (currentLED ==0) {direction =1;}
原创粉丝点击