Arduino基础入门篇07—按键控制LED灯

Arduino基础入门篇07—按键控制LED灯

|

  阅读本文大概需要3分钟。

|

前面介绍了Arduino数字I/O,通过控制数字引脚输出来控制LED灯亮灭。本篇将介绍数字I/O的输入功能,通过检测按键状态来控制LED灯亮灭,把LED的亮灭变成人为可控制的。

1. 实验材料

  • Uno R3开发板

  • 配套USB数据线

  • 面包板及配套连接线

  • 1个LED灯

  • 1个220Ω电阻

  • 1个轻触按键

实验中我们用到了轻触按键,常见的有2脚按键和4脚按键,其内部结构如下图所示:

Arduino基础入门篇07—按键控制LED灯
按键内部结构

当按下按键时,按键两端接通,当放开时,两端再次断开。

2. 实验步骤

  1. 根据原理图搭建电路

    直插式LED灯负极接开发板GND,正极接220Ω限流电阻,电阻另一端接开发板数字9引脚。按键一端接开发板GND,另一端接数字引脚2。

    实验原理图如下图所示:

    Arduino基础入门篇07—按键控制LED灯
    实验原理图

    实物连接图如下图所示:

    Arduino基础入门篇07—按键控制LED灯
    实物连接图
  2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

     1/*
    2  *  Digital_Button
    3  *  通过按键控制LED灯亮灭
    4  */

    5
    6int  buttonPin  =  2;   //  按键的管脚定义
    7int  ledPin  =    9;     //  LED灯管脚定义
    8
    9int  buttonState  =  0;   //  存储按键状态值
    10
    11void  setup()  {
    12    pinMode(ledPin,  OUTPUT);     //设置LED管脚输出模式
    13    pinMode(buttonPin,  INPUT_PULLUP);   //设置按键管脚上拉输入模式
    14 }
    15
    16void  loop()  {
    17
    18    buttonState  =  digitalRead(buttonPin);   //读取按键返回状态值
    19
    20    if  (buttonState  ==  LOW)  {  //  若按键被按下
    21        delay(80);   //等待跳过按键抖动的不稳定过程
    22        if  (buttonState  ==  LOW)  //  若按键被按下
    23        {   
    24            digitalWrite(ledPin,  HIGH);   //  点亮LED灯
    25        }
    26    }
    27    else  {     
    28        digitalWrite(ledPin,  LOW);   //  熄灭LED灯
    29    }
    30
    31 }
  3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

    Arduino基础入门篇07—按键控制LED灯
    程序下载

3. 实验现象

按下按键,LED灯点亮。放开按键,LED灯熄灭。

Arduino基础入门篇07—按键控制LED灯
实验现象

4. 函数介绍

digitalRead()

  • 描述:读取指定数字引脚的值

  • 函数原型:digitalRead(pin)

  • 参数:要读取的数字引脚编号

  • 返回值:HIGH(1)或LOW(0)

5. 总结分析

通过digitalRead()函数来读取数字I/O引脚状态,然后根据状态去点亮或者熄灭LED灯。需要注意:

  • 由于Arduino上电后,数字I/O管脚处于悬空状态,此时通过digitalRead()读到的是一个不稳定的值(可能是高,也可能是低)。所以通过pinMode()函数设置按键引脚为上拉输入模式。即使用内部上拉电阻,按键未按下时,引脚将为高电平,按键按下为低电平。

  • 按键在按下的过程中,有一段接触未接触的不稳定过程,即按键的抖动。在判断按键状态时,通过 delay()延时跳过抖动的不稳定状态,即软件上进行消抖。

  • 可以不使用内部上拉电阻,在电路上添加按键的上拉电阻或下拉电阻,可达到相同效果。

Arduino基础入门篇07—按键控制LED灯
扫码加入微信公众号:TonyCode


原文始发于微信公众号(

TonyCode

):Arduino基础入门篇07—按键控制LED灯

|

发表评论