• Arduino程序设计(二) 按键控制LED灯



    前言

    • 本文主要介绍三种按键控制LED灯的实现方式,分别是内部上拉实现,外部上拉实现以及按键控制LED灯升级版。
    • 通过软硬件结合的方式,更好地理解Arduino编程,熟悉库函数的使用。

    一、按键控制LED灯——内部上拉(基础)

    • 结合数字输入输出功能,制作一个可控制的LED。
    • 功能实现:按住按键时,点亮LED,放开按键后,熄灭LED的效果。
    • 常见的2脚按键和4脚按键,内部如下图所示:

    在这里插入图片描述

    • 上述按键为常开按键,当按下按键时,就会接通按键两端,放开时,两端会再次断开。
    • 使用内部上拉电阻,实现按键控制LED灯的电路图如下图所示:
      在这里插入图片描述
      在这里插入图片描述

    代码实现:

    //内部上拉,按键控制LED亮灭
    
    int Button = 12;                     //定义全局变量Button,Button对应GPIO12
    int MCU_LED = 2;                     //定义全局变量MCU_LED,MCU_LED对应GPIO2
    
    void setup() {
      pinMode(Button, INPUT_PULLUP);     //Button定义为内部上拉模式
      pinMode(MCU_LED, OUTPUT);          //MCU_LED定义为输出引脚
      digitalWrite(MCU_LED, HIGH);       //初始状态,熄灭灯
    }
    
    void loop() {
      if(digitalRead(Button) == LOW){
        digitalWrite(MCU_LED, LOW);     //按键按下,点亮灯
      }
      else{
        digitalWrite(MCU_LED, HIGH);    //按键未按下,熄灭灯
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    二、按键控制LED灯——外部上拉(基础)

    • 上拉电阻:电阻连接到VCC,可以稳定I/O口电平,将引脚稳定在高电位。
    • 使用外部上拉电阻,实现按键控制LED灯的电路图如下图所示:

    在这里插入图片描述
    代码实现:

    //外部上拉,按键控制LED亮灭
    
    int Button = 12;
    int MCU_LED = 2;
    
    void setup() {
      pinMode(Button, INPUT);       //Button定义为外部上拉模式
      pinMode(MCU_LED, OUTPUT);      //MCU_LED定义为输出引脚
      digitalWrite(MCU_LED, HIGH);   //初始状态,熄灭灯
    }
    
    void loop() {
      if(digitalRead(Button) == LOW){
        digitalWrite(MCU_LED, LOW);   //按键按下,点亮灯
      }
      else{
        digitalWrite(MCU_LED, HIGH);   //按键未按下,熄灭灯
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    三、按键控制LED灯(进阶)

    • 使用外部上拉电阻,按键控制LED灯,硬件电路图同第二部分,按键控制LED灯——外部上拉(基础)。
    • 实现功能:按一下按键,点亮LED;再按一下按键,熄灭LED。
    • 实验现象
    • ① 按一下按键,点亮LED;
    • ② 再按一下按键,熄灭LED;
    • ③ 长按按键,LED灯闪烁,500ms点亮,500ms熄灭。

    代码实现:

    //外部上拉,按键控制LED。
    //按一下按键,点亮LED;再按一下按键,熄灭LED。
    
    int Button = 12;
    int MCU_LED = 2;
    boolean LED_State = false;               //定义boolean全局变量,boolean定义的变量只有true和false两种状态
    
    void setup() {
      pinMode(Button, INPUT);               //Button定义为外部上拉模式
      pinMode(MCU_LED, OUTPUT);             //MCU_LED定义为输出引脚
      digitalWrite(MCU_LED, HIGH);          //初始状态,熄灭灯
    }
    
    void loop() {
      if(digitalRead(Button) == LOW){      //判断按键按下
        delay(500);                        //延时500ms,按键消抖
        LED_State = !LED_State;            //LED灯状态取反
      }
      
      if(LED_State == true){              //判断LED灯状态为真
         digitalWrite(MCU_LED, LOW);      //按键按下,点亮灯
      }
      else{
         digitalWrite(MCU_LED, HIGH);     //按键未按下,熄灭灯
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    总结

    • 本文主要介绍三种按键控制LED灯的实现方式,其中,第三部分介绍按键控制LED灯,实现按键控制LED灯启闭,满足了日常生活中按键控制LED灯基本功能。

    参考文献

    参考文献1: 按键控制LED实验
    参考文献2: Arduino程序设计(一) 流水灯+呼吸灯

  • 相关阅读:
    Postman如何携带token——Bearer Token和Headers
    Java集合大总结——List的简单使用
    T8161B T8403 T8448 ICS TRIPLEX 具有支持物联网边缘的计算机视觉
    中国人造板行业现状调查分析与“十四五”战略规划研究报告2022-2028年版
    Gopher进阶神器:拥抱刻意练习,从新手到大师。
    小谈设计模式(13)—外观模式
    Python中的增强现实(AR)技术和应用
    开源博客项目Blog .NET Core源码学习(3:数据库操作方式)
    MATLAB中islocalmin函数用法
    Centos7 部署Prometheus(Kubernetes)
  • 原文地址:https://blog.csdn.net/weixin_44887565/article/details/127865260