第三课 按钮控制的LED延时开关
    一、任务简介
    今天制作一期人机互动的例子带给大家:用按钮控制LED。但是不能把按钮单纯的作为开关,而是将开关作为延时开关来使用,按下开关后1秒钟,灯才会亮,灯亮5秒后才熄灭,这样大家就能依据这个例子,自己延伸出很多好玩的玩法出来。
    二、硬件连接
    本例中,按钮模块是输入模块,想Arduino输入数字开关量,通过Arduino的4脚接入,LED是输出模块,Arduino通过13脚接LED模块。电路连接方法如图所示。
    第三课 按钮控制的LED延时开关 - 图1
    三、程序代码
    /
    作用:当你按下按钮后1秒钟,灯会亮,然后维持5秒钟,熄灭
    /
    void setup ( ) //初始化程序,用pinMode函数设置引脚模式
    {
    pinMode(4,INPUT);
    pinMode(13,OUTPUT);
    //将4号数字口设置为输入状态,13号数字口设置为输出状态
    }
    void loop() //程序主函数
    {
    int n =digitalRead(4);
    //创建一个变量n,将4号数字口的状态采集出来赋值给他。digitalRead 即读取数字状态的意思。因为按钮模块是按下高电平(即为1),因此当按钮按下的时候,n的值为1,不按时,n的值为0.
    if (n==HIGH)
    //判断n是否为高电平(即是否按下),如果是执行下面的语句,不是则跳过。
    {
    delay(1000); //延时1s
    digitalWrite(13,HIGH); //第13脚输出高电平,LED灯亮
    delay(5000); //延时5s
    digitalWrite(13,LOW); //第13脚输出低电平,LED灯灭
    }
    }
    四、查看效果
    第三课 按钮控制的LED延时开关 - 图2
    将程序编译后写入Arduino中,按下按钮,1s后LED灯点亮,点亮5s后熄灭,完成本例功能。
    五、本次实验所用到的语法
    1.void
    void用来声明一个函数,该函数不会返回任何数据。
    //功能在“setup”和“loop”被执行
    //但没有数据被返回到高一级的程序中
    void setup()
    {
    // …
    }
    void loop()
    {
    // …
    }
    2. setup()
    在控制器中程序运行时将首先调用 setup() 函数。用于初始化变量、设置引脚的输出\输入类型、配置串口、引入类库文件等等。每次控制器上电或重启后,setup() 函数只运行一次。
    3. loop( )
    在setup( ) 函数中初始化和定义了变量,然后执行 loop( ) 函数。顾名思义,该函数在程序运行过程中不断的循环,根据一些反馈,相应改变执行情况。通过该函数动态控制控制器的各项操作。
    4.pinMode( )
    将指定的引脚配置成输出或输入。
    语法
    pinMode(pin,mode)
    参数
    pin:要设置模式的引脚
    mode:INPUT(输入)或OUTPUT(输出)或ANALOG(模拟量)
    5.digitalWrite( )
    给一个数字引脚写入HIGH或者LOW。
    如果一个引脚已经使用pinMode( )配置为OUTPUT模式,其电压将被设置为相应的值,HIGH为5V,LOW为0V。
    注意:数字13号引脚不能作为数字输入使用
    语法
    digitalWrite(pin,value)
    参数
    pin:引脚编号(如1,5,10,A0,A3)
    value: HIGH or LOW
    6.digitalRead( )
    读取指定引脚的值,HIGH或LOW。
    语法
    digitalRead(PIN)
    参数
    pin:你想读取的引脚号(int)
    返回
    HIGH 或 LOW
    5.delay( )
    使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒)
    语法
    delay(ms)
    参数
    ms:暂停的毫秒数(unsigned long)
    6.if(条件判断语句)
    if 语句与比较运算符一起用于检测某个条件是否达成,如某输入值是否在特定值之上等。if 语句的语法是:
    if (someVariable > 50)
    {
    // 执行某些语句
    }
    本程序测试 someVariable 变量的值是否大于 50。当大于 50 时,执行一些语句。换句话说,只要 if 后面括号里的结果(称之为测试表达式)为真,则执行大括号中的语句(称之为执行语句块);若为假,则跳过大括号中的语句。 if 语句后的大括号可以省略。若省略大括号,则只有一条语句(以分号结尾)成为执行语句。
    在小括号里求值的表达式,需要以下操作符:
    x == y(x 等于 y)
    x != y(x 不等于 y)
    x < y(x 小于 y)
    x > y(x 大于 y)
    x <= y(x 小于等于 y)
    x >= y(x 大于等于 y)
    六、思考和扩展
    1.将按钮模块更换为光敏模块和热敏模块,再控制一个LED灯。
    2.将按钮模块更换为拾音器模块,能否控制灯的亮灭。
    3.思考,如何制作一个可以自动吹灭蜡烛的作品,要制作这个作品,你还需要什么模块?