最基础的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);//点亮当前的LED
currentLED += 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);//点亮当前的LED
currentLED += direction; //当前值增加ditecion表示的数值
//如果到达LED末端改变ditection 值
if (currentLED ==9) {direction = -1;}
if (currentLED ==0) {direction =1;}