我们可以把LED接到Arduino上面,也可以把开关接到Arduino上面。LED是输出器件,能表示输出的状态。而开关是输入器件,Arduino可以通过程序判断开关的状态。
本实验通过程序读取按钮的状态再控制LED的输出状态。

# 部署

  1. 把按钮Button1连接在OSEPP UNO的2号引脚,引脚01用于与计算机通信和程序下载,通常不在应用中使用它们。
  2. 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

# 操作视频