延时开关是为了节约电力资源而开发的一种新型的自动延时电子开关,省电、方便。主要用于楼梯间,卫生间等场所。下面我们就来制作一个延时开关。
本实验通过程序实现:按钮Button1按下,点亮LED,5秒后熄灭。

# 部署

继续使用上一个实验中的线路,只需修改一下程序。

# 程序搭建

我们首先来了解一下Arduino的程序工作流程:

uml diagram

开关有两种状态按下时和没按时。按下时是低电平,没按时是高电平(1.学习板上的开关接入了上拉电阻,开关没有被按下时默认是高电平)。程序可以通过判定开关的这两种状态来决定是否点亮LED。
开关接到2号引脚,当开关按下时,2号引脚是低电平,此时程序执行点亮LED,也就是13号引脚输出高电平。点亮之后程序暂停5秒,然后13号引脚输出低电平,LED熄灭。
如果开关没有被按下,2号引脚始终都是高电平。程序会直接跳过该段代码。

依照流程图,最终得到程序

  • oseppBlock程序

  • Arduino程序

    void setup() {
        // button1
        pinMode(2, INPUT);  //定义2号引脚为输入模式;
        // led1
        pinMode(13, OUTPUT);  //定义13号引脚为输出模式;
    }
    void loop() {
        if (digitalRead(2) == LOW) {  //如果开关被按下
            digitalWrite(13, HIGH);   // 13号引脚输出高电平
            delay(5000);              //延时5000毫秒
            digitalWrite(13, LOW);    // 13号引脚转换为低电平
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

# 运行结果

如果开关按下时,LED就会点亮5秒,然后熄灭,直至下一次开关按下LED才会点亮。

# 解析

程序判断语句,根据条件采取行动:

判断语句 if ,如果...执行....。
如果按钮开关按下就点亮LED,点亮LED就是执行动作。
if语句是指编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定是否执行下面的程序,如果为真就执行,否则就跳过此部分。

# 操作视频