Arduino笔记(一)——流水灯

最基础的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;}

你可能感兴趣的:(Arduino笔记(一)——流水灯)