查看: 2135|回复: 1

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

[复制链接]
  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2017-1-15 19:34:07 | 显示全部楼层 |阅读模式
    分享到:

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

    1.png

    让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

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

     楼主| 发表于 2017-1-15 19:35:59 | 显示全部楼层
    本帖最后由 feixiang20 于 2017-1-15 20:20 编辑



    大家新年快乐
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 13:42 , Processed in 0.247911 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.