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

news2025/7/18 8:20:15

按键控制LED灯程序设计

  • 前言
  • 一、按键控制LED灯——内部上拉(基础)
  • 二、按键控制LED灯——外部上拉(基础)
  • 三、按键控制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);    //按键未按下,熄灭灯
  }
}

二、按键控制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);   //按键未按下,熄灭灯
  }
}

三、按键控制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);     //按键未按下,熄灭灯
  }
}

总结

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

参考文献

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PatchCore原理与代码解读

paper:Towards Total Recall in Industrial Anomaly Detection code:GitHub - amazon-science/patchcore-inspection 存在的问题 目前无监督缺陷检测常用的一种方法是直接利用在ImageNet上预训练的模型中的表示,而不专门进行目标分布的迁…

从零开始将图片信息和空间信息绑定,并在前端展示到地图

作者:xiaoyan 关键词:前端查询时展示和空间数据绑定的图片资源 本文适合零基础入门 背景:iServer支持空间查询,可以将空间数据属性表中的属性查询出来,如通过SQL语句查询出某地大楼实际层高,或者查询出某…

RHCE实验--配置nfs服务

1、开放/nfs/shared目录,供所有用户查询资料; 2、开放/nfs/upload目录,供所有用户上传下载资料; 服务器与客户端都写好yum源以及挂载光盘,然后安装服务包 [rootserver ~]# yum install rpcbind -y [rootserver ~]# y…

Vue3基础

Vue 官网 https://cn.vuejs.org/ https://v3.cn.vuejs.org/ https://staging-cn.vuejs.org/api/ 1、环境 1.1、nodejs node node -vnpm #当前版本 npm -v #升级npm版本 npm install -g npm1.2、vue #安装vue npm install -g vue-cli #安装最新版本 npm install -g vu…

LQ0197 锦标赛【程序填空】

题目来源:蓝桥杯2014初赛 C A组E题 题目描述 本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一&#xff0…

Python简单实现人脸识别检测, 对照片进行评分

大家好,今天和大家说说如何用Python简单实现人脸识别检测, 对照片进行排名,看看自己有多漂亮。 [开发环境]: Python 3.8 Pycharm 2021.2 [模块使用]: requests >>> pip install requeststqdm >>> pip install tqdm 简单实现进度条效果…

Arduino从零开始(1)——按钮控制LED

0.前言 本文主要介绍Arduino对于开关和条件判断函数的使用。 目录 0.前言 1.介绍 2.按钮控制LED 2.1下拉模式: 2.2上拉模式 3.扩展实验: 1.介绍 前篇介绍了点亮LED,这次案例我们尝试通过一个简单的传感器——按钮,来实现…

Ubuntu20.04离线安装Vmware tools

参考连接:在 Linux 虚拟机中手动安装 VMware Tools 从 Workstation Pro 菜单栏中选择虚拟机 > 安装 VMware Tools。 如果安装了早期版本的Vmware tools,则菜单项是更新Vmware tools如果这个安装Vmware tools 是灰色的,进行如下的处理方式…

HTML基本骨架与编辑器选择

HTML基本骨架与编辑器选择 文章目录HTML基本骨架与编辑器选择1.HTML基本了解1.1 什么是HTML1.2 HTML标签1.3 HTML元素1.4 Web浏览器1.5 HTML网页结构1.6 HTML版本了解2.HTML基本骨架介绍3.HTML编辑器的下载与使用1.HTML基本了解 1.1 什么是HTML HTML 是用来描述网页的一种语言…

双链表的基本操作

目录 一、双链表的设计 二、双链表的实现和基本操作 1.实现双链表节点以及设置first、last指针 2.获取当前链表中元素的数量 3.获取指定位置的节点 4.在尾部添加结点元素 5.在指定位置添加元素 6.删除指定位置的结点 一、双链表的设计 针对于查询操作,我们可…

计算机操作系统:实验3 【虚拟存储器管理】

计算机操作系统:实验3 【虚拟存储器管理】 文章目录计算机操作系统:实验3 【虚拟存储器管理】一、前言二、实验目的三、实验环境四、实验内容五、实验说明1、设计中虚页和实页的表示2、关于缺页次数的统计3、LRU算法中“最近最久未用”页面的确定4、算法…

删除类及其对象的属性:delattr()函数

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 删除类及其对象的属性 delattr()函数 [太阳]选择题 请问对以下Python代码说法错误的是? class MyClass1: x 1 y 2 myObject1 MyClass1() print(【访问】myObject1的属…

Revit中“结构框架显示与剪切“的应用和一键剪切功能

一、Revit关于"结构框架显示与剪切"的应用 结构框架:顾名思义其实它表示的就是结构梁而已,但是我们画图的时候往往会显示"实线"和"虚线",以至于在出结构图纸的时候,达不到出图要求 NO.2、应用 Part…

ISCTF

upload upload,一道phar文件上传题目 <?php class upload{public $filename;public $ext;public $size;public $Valid_ext;public function __construct(){$this->filename $_FILES["file"]["name"];$this->ext end(explode(".", …

[山东科技大学OJ]1490 Problem F: 该按哪些键

Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1693 Solved: 433 [Submit][Status] Description Peter在手机上打字时一直用全键键盘来输入&#xff0c;但最近不知道怎么搞的&#xff0c;把全键键盘弄丢了&#xff0c;只剩下了9键键盘。一项喜欢高科技的Peter却不会用9键…

彻底搞懂nodejs事件循环

nodejs是单线程执行的&#xff0c;同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回&#xff0c;就可以继续往下执行代码。当异步事件触发之后&#xff0c;就会通知主线程&#xff0c;主线程执行相应事件的回调。 以上是众所周知的内容。今天…

ASEMI整流桥D3KB100参数,D3KB100规格,D3KB100封装

编辑-Z ASEMI整流桥D3KB100参数&#xff1a; 型号&#xff1a;D3KB100 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;1000V RMS反向电压VR(RMS)&#xff1a;700 平均整流输出电流&#xff08;IO&#xff09;&#xff1a;3A 峰值正向浪涌电流&#xff08…

【论文阅读】时序动作检测系列论文精读(2019年)

文章目录1. BMN: Boundary-Matching Network for Temporal Action Proposal Generation论文目的——拟解决问题贡献——创新实现流程详细方法2. MGG: Multi-granularity Generator for Temporal Action Proposal论文目的——拟解决问题贡献——创新实现流程详细方法3. P-GCN: G…

稳压二极管的应用及注意事项

文章目录稳压二极管也被称为齐纳二极管 齐纳二极管和普通二极管的伏安特性曲线 齐纳二极管的工作原理 稳压二极管的伏安特性曲线的正向特性和普通二极管差不多&#xff0c;反向特性是在反向电压低于反向击穿电压时&#xff0c;反向申阳很大&#xff0c;反向漏电流极小。但是…

【学习笔记】AGC028/AGC007

AGC028 Removing Blocks High Elements 好仙啊。 我会转化&#xff01;&#xff01;问题转化为在原序列剩下的数中取ISISIS序列aaa,bbb&#xff0c;满足cx∣a∣cy∣b∣cx|a|cy|b|cx∣a∣cy∣b∣ 。对于没在a,ba,ba,b序列中的数&#xff0c;可以通过恰当放置使其不对前缀最大…