Arduino学习笔记——LED跑马灯

ぃ、小莉子 提交于 2019-12-04 17:53:20

最基础的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;}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!