1回答

1收藏

【赚周年币】技术贴Week 3-Day4---Arduino广告效果的流水灯

#线上活动 #线上活动 2658 人阅读 | 1 人回复 | 2017-01-15


在这个实验中,需要一个LED模块,LED模块相当于8个LED灯组合在一起,一面针脚为阳极,一面针脚为阴极。一般印有文字的一面为阳极。当然也可以用8只LED灯连接出来。
1.LED模块一只;
2.面包板线8条,最好有不同颜色进行区分;红色长面包板线一条,用于接出5v电源口;
3.电阻8只
4.连接图如下,定义口2至口9为输出信号口,与LED模块阴极针脚连接,再接入电阻,最后由红线接入5V电源口。



让LED模块8只灯一起闪烁 代码如下:
------------------------------------------------
#include
#define LED1 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define LED6 7
#define LED7 8
#define LED8 9
void setup() {
   pinMode(LED1,OUTPUT);
   pinMode(LED2,OUTPUT);
   pinMode(LED3,OUTPUT);
   pinMode(LED4,OUTPUT);
   pinMode(LED5,OUTPUT);
   pinMode(LED6,OUTPUT);
   pinMode(LED7,OUTPUT);
   pinMode(LED8,OUTPUT);  //设置口2至口9为输出信号
}
void loop(){
   Blink();  //调用闪烁函数
}

void Blink(){
     unsigned char i;// 定义变量
     for(i=2;i<9;i++)
        digitalWrite(i,LOW); //口2至口9低平信号,点亮所有灯
     delay(500);
     for(i=2;i<9;i++)
        digitalWrite(i,HIGH);
     delay(500);
}
------------------------------------------------
增加LED模块灯的流水灯效果:
1.依次点亮所有LED,然后依次熄灭所有LED。编写void style1(),并由void loop()引用,代码如下。
---------------------------------
void style1(){
     unsigned char i;
     for(i=2;i<=9;i++)
       { digitalWrite(i,LOW);
         delay(300);
       }  //从口2至口9依次点亮LED,每只延时300毫秒
     for(i=2;i<=9;i++)
       { digitalWrite(i,HIGH);
         delay(300);
       } //从口2至口9依次熄灭LED,每只延时300毫秒
}
---------------------------------
2.流水灯效果第二种,从口2至口9依次熄灭LED,再从口9至口2依次点亮LED。从视觉上形成灯从左至右灭,再回亮的效果。只要修改void style1()中的循环变量执行的顺序。
void style2(){
     unsigned char i;
     for(i=2;i<=9;i++)
       { digitalWrite(i,LOW);
         delay(300);
       }  //从口2至口9依次熄灭LED,每只延时300毫秒
     for(i=9;i>=2;i--)
       { digitalWrite(i,HIGH);
         delay(300);
       } //从口9至口2依次点亮LED,每只延时300毫秒
}
---------------------------------
3.让LED模块显示单个灯轮流在口2至口9之间输出点亮。即8个灯中每次只有一个亮,其余7只熄灭状态。void style3()代码如下;
---------------------------------
void style3(){
     unsigned char i;
     for(i=2;i<=9;i++)
         {digitalWrite(i,LOW);//置口2至口9为灯灭
          if(i!=2){
                   digitalWrite(i-2,HIGH);
                  }   //口2不算在内,从口3开始依次设置一个灯亮
          delay(300);
         }
     delay(300);
     digitalWrite(9,HIGH);//口9的灯需要特别设置,它不在循环内;
}
---------------------------------
4.style4()与style3反向流水灯效果,修改循环方向即可。

本次实验中,LED亮灭由Arduino Uno 板的口2至口9输出低电平,采用IO控制阴极模式。与前面的输出高电平并接GND后点亮LED有区别。不论用什么样的方式点高LED灯,都让我们看到了Arduino的魔力,试想圣诞平安夜时,把这只流水灯放在精致的小盒子里并露出LED灯,挂在圣诞树上该多有趣。

评分

参与人数 2 +65 收起 理由
EEboard爱板网 + 50 3周发帖养成记 奖励
loveeeboard + 15

查看全部评分

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

feixiang20

发表于 2017-1-15 19:35:59 | 只看该作者

本帖最后由 feixiang20 于 2017-1-15 20:20 编辑



大家新年快乐
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条