第三课 按钮控制的LED延时开关
一、任务简介
今天制作一期人机互动的例子带给大家:用按钮控制LED。但是不能把按钮单纯的作为开关,而是将开关作为延时开关来使用,按下开关后1秒钟,灯才会亮,灯亮5秒后才熄灭,这样大家就能依据这个例子,自己延伸出很多好玩的玩法出来。
二、硬件连接
本例中,按钮模块是输入模块,想Arduino输入数字开关量,通过Arduino的4脚接入,LED是输出模块,Arduino通过13脚接LED模块。电路连接方法如图所示。
三、程序代码
/
作用:当你按下按钮后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灯灭
}
}
四、查看效果
将程序编译后写入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.思考,如何制作一个可以自动吹灭蜡烛的作品,要制作这个作品,你还需要什么模块?
