我们可以把LED接到Arduino上面,也可以把开关接到Arduino上面。LED是输出器件,能表示输出的状态。而开关是输入器件,Arduino可以通过程序判断开关的状态。
本实验通过程序读取按钮的状态再控制LED的输出状态。
# 部署
- 把按钮
Button1
连接在OSEPP UNO的2
号引脚,引脚0
和1
用于与计算机通信和程序下载,通常不在应用中使用它们。 - 把
LED1
连接在OSEPP UNO的13
号引脚。
# 程序搭建
在左侧的积木区模块里面选择输入模块里面的开关,
按钮开关积木,左图表示Button1接在Arduino的2
号引脚。
拖入到右边工作区空白处,这时在这个模块下面就出现了,
按钮开关状态积木,左图表示Button1
开关按下时状态。工作区中需要有按钮积木模块,此积木才会出现。
将这个图标拖入到LED1的电平选择框里面。
此时积木表示开关按下时,点亮LED。程序通过判断开关的状态来决定是否点亮LED。
最终的程序:
oseppBlock程序
Arduino程序
void setup() { //button1 pinMode(2, INPUT); //定义2号引脚为输入模式 //led1 pinMode(13, OUTPUT); //定义13号引脚为输出模式 } void loop() { digitalWrite(13, digitalRead(2) == LOW); //开关按下时LED点亮 }
1
2
3
4
5
6
7
8
9
10
11
12
# 运行结果
按钮(Button1)按下时LED发光,松开时LED熄灭。
# 解析
- 数字引脚输入状态:
当Arduino的数字引脚设置为输入时 INPUT
,只能读取两种状态:高电平HIGH
或者低电平LOW
。
函数 digitalRead()
用来监视输入引脚 INPUT
的电压,如果电压是高电平,它将返回HIGH
,如果是低电平就返回LOW
。但实际中,一般来说高于芯片供电电压的一半就被认为是高电平,而小于这个电压就被认为是低电平。如果该引脚没连接(悬空),那从 digitalRead()
返回的值是不确定的,可能是HIGH
也可能是LOW
。
定义输入还有另一种模式:
定义引脚为带上拉电阻的输入模式时,芯片内部的上拉电阻将会连接到该引脚,从而为引脚提供默认高电平状态。
代码:
void setup()
{
pinMode(3, INTPUT_PULLUP) //定义3号引脚为带上拉电阻的输入模式
}
1
2
3
4
2
3
4