news 2026/6/10 15:21:58

Arduino入门教程七|读取数字输入——按钮控制LED(含上拉/下拉电阻详解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Arduino入门教程七|读取数字输入——按钮控制LED(含上拉/下拉电阻详解)

我整理了一套Arduino零基础 从入门到高级 完整系统课程,包含视频讲解、全套源码、接线图纸、库文件、ESP32/ESP32-S3 摄像头 & 物联网实战项目,循序渐进,新手也能零基础吃透。需要系统学习可以查看我主页专属课程(零基础保姆级Arduino教程从入门到实战_在线视频教程-CSDN程序员研修院)。

前言:本文针对Arduino入门学习者,详细讲解“读取按钮数字输入”的核心实验,拆解按钮工作原理、数字输入读取方法、上拉/下拉电阻的作用及接线技巧,结合课堂实验和课后练习,帮助新手快速掌握Arduino数字输入的基础应用,为后续复杂传感器应用打下基础。

适用人群:Arduino入门新手、嵌入式实验初学者、数字输入基础学习者

实验目标:理解按钮的传感器属性,掌握digitalRead()函数的用法,学会按钮的正确接线(含上拉/下拉电阻),完成“按钮控制LED亮灭”实验,实现“按住按钮点亮、松开熄灭”的功能。

一、实验核心认知:按钮也是传感器

很多新手会误以为“传感器”是复杂的电子元件,其实我们常见的按钮(轻触开关)也是一种简单的传感器——它通过自身的通断,向Arduino发送“导通”或“断开”的信号,Arduino通过读取这些信号,实现对其他元件(如LED)的控制。

1.1按钮的基本结构与工作原理

我们实验中常用的四脚按钮,内部结构简单,核心是“弹片式通断”:

  • 引脚关系:四脚按钮的对角引脚(如A与C、B与D)内部默认相连,形成两组独立的连接点;

  • 工作状态:未按下时,内部弹片处于断开状态,两组对角引脚不导通;按下时,按钮压下弹片,两组对角引脚导通;松开后,弹片回弹,恢复断开状态;
  • 核心作用:通过机械按压的动作,实现电路的通断切换,进而向Arduino传递数字信号(高电平/低电平)。

二、核心知识点:Arduino数字输入读取

Arduino的所有数字引脚(2~13)和模拟引脚(A0~A5),都可以作为数字输入引脚,用于读取外部设备(如按钮)的通断信号,核心是区分“高电平(1)”和“低电平(0)”。

2.1数字输入的电平判断规则

Arduino对数字输入的电平判断有明确标准,基于电源电压(默认5V):

  • 高电平(对应数字1):输入电压超过电源电压的一半(约2.6V);
  • 低电平(对应数字0):输入电压低于0.25V;
  • 注意:若引脚未连接任何电路,会处于“浮动信号”状态,电平随机变化(一会儿高、一会儿低),导致Arduino读取错误,这也是我们需要用到上拉/下拉电阻的核心原因。

2.2核心函数:digitalRead()详解

读取数字输入的核心函数是digitalRead(),专门用于读取指定引脚的电平状态,语法简单,实用性强。

  • 语法:

digitalRead(引脚号); // 引脚号可选择2~13或A0~A5

  • 返回值:布尔型(bool),要么是HIGH(高电平,对应1),要么是LOW(低电平,对应0);
  • 用法示例:将读取到的电平状态赋值给布尔型变量,方便后续逻辑判断,如

bool buttonState = digitalRead(2);

三、关键重点:按钮的正确接线(避免短路与浮动信号)

按钮接线是实验的重点,也是新手最容易出错的地方——错误接线可能导致短路、引脚损坏,或出现“浮动信号”导致读取异常,下面详细讲解两种常用接线方式(上拉电阻、下拉电阻),均使用10KΩ电阻(色环:棕黑黑红棕)。

3.1错误接线警示(禁止这样接)

若直接将按钮一端接5V、另一端接Arduino数字引脚,未串联电阻,会导致电路短路,可能烧毁Arduino引脚或开发板,务必避免这种接线方式。

3.2上拉电阻接线(推荐,文档重点)

上拉电阻的核心作用是“将引脚电平默认拉高到高电平”,避免浮动信号,接线步骤如下(以数字2号引脚为例):

  1. 按钮的一组对角引脚(如A和C)中,一端(A)连接Arduino的5V引脚;
  1. 按钮的另一端(C)连接两个支路:一个支路连接Arduino的数字2号引脚,另一个支路通过10KΩ电阻连接GND;
  1. 电路状态:
  • 未按下按钮时:数字2号引脚通过上拉电阻连接GND,输入为高电平(1);
  • 按下按钮时:按钮导通,数字2号引脚直接连接5V,输入为低电平(0)。

补充:Arduino引脚内置上拉电阻,可通过代码直接启用(pinMode(引脚, INPUT_PULLUP)),无需外接10KΩ电阻,能简化接线,后续代码会详细说明。

3.3下拉电阻接线(备用方案)(推荐,文档重点)

下拉电阻的核心作用是“将引脚电平默认拉低到低电平”,接线逻辑与上拉电阻相反,步骤如下(以数字2号引脚为例):

  1. 按钮的一组对角引脚(如A和C)中,一端(A)连接GND;
  1. 按钮的另一端(C)连接两个支路:一个支路连接Arduino的数字2号引脚,另一个支路通过10KΩ电阻连接5V;
  1. 电路状态:
  • 未按下按钮时:数字2号引脚通过下拉电阻连接5V,输入为低电平(0);
  • 按下按钮时:按钮导通,数字2号引脚直接连接GND,输入为高电平(1)。

总结:上拉和下拉电阻的核心目的一致——避免引脚处于浮动状态,确保Arduino能稳定读取按钮的通断信号,两者仅默认电平状态和接线逻辑不同。

四、课堂实验:按钮控制LED亮灭(基础版)

实验要求:编写程序,用按钮控制外接LED灯,实现“按住按钮时点亮,松开按钮时熄灭”的功能,采用下拉电阻接线方式(新手易上手)。

4.1硬件准备

  • Arduino Uno开发板(或兼容板)
  • 四脚按钮1个
  • LED灯1个
  • 10KΩ电阻1个(上拉/下拉用)
  • 220Ω电阻1个(保护LED,避免烧毁)
  • 杜邦线若干(公对母、母对母)
  • 面包板1个(方便接线)
  • 计算机1台(安装Arduino IDE 1.8.5及以上版本)

4.2硬件接线(下拉电阻方式)

  1. LED接线:LED正极(长脚)通过220Ω电阻连接Arduino 9号引脚,LED负极(短脚)连接GND;
  1. 按钮接线:按钮一端连接GND,另一端分两路:一路连接Arduino 2号引脚,另一路通过10KΩ电阻连接5V;
  1. 将Arduino通过USB数据线连接计算机,确认电脑识别开发板(设备管理器查看COM口)。

4.3完整实验代码(可直接上传)

cpp
//定义引脚
const int buttonPin = 2; // 按钮连接的数字引脚
const int ledPin = 9; // LED连接的数字引脚
bool buttonState; // 存储按钮当前状态(HIGH/LOW)

void setup() {
pinMode(buttonPin, INPUT); // 设置按钮引脚为输入模式
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式
Serial.begin(9600); // 初始化串口(可选,用于调试)
}

void loop() {
// 读取按钮引脚的电平状态
buttonState = digitalRead(buttonPin);

// 逻辑判断:按下按钮(高电平),点亮LED;松开(低电平),熄灭LED
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // 点亮LED
Serial.println("按钮已按下,LED点亮"); // 串口调试信息(可选)
} else {
digitalWrite(ledPin, LOW); // 熄灭LED
Serial.println("按钮已松开,LED熄灭"); // 串口调试信息(可选)
}
delay(100); // 延时100ms,稳定信号,减少误触发
}

4.4实验步骤与现象

  1. 将上述代码复制到Arduino IDE,选择对应开发板(Arduino/Genuino Uno)和COM口;
  1. 点击“上传”按钮,等待代码上传完成(上传成功会提示“上传成功”);
  1. 按下按钮:LED灯点亮,串口监视器(波特率9600)显示“按钮已按下,LED点亮”;
  1. 松开按钮:LED灯熄灭,串口监视器显示“按钮已松开,LED熄灭”,完全符合实验要求。

4.5常见问题排查

  • 问题1:LED不亮,按钮按下无反应?→ 检查LED正负极是否接反、220Ω电阻是否串联;确认按钮接线正确,下拉电阻未接反。
  • 问题2:LED常亮或常灭,不受按钮控制?→ 排查引脚接错(如按钮接错引脚、LED接错引脚);检查是否出现浮动信号,确认下拉电阻正常连接。
  • 问题3:上传失败?→ 确认COM口选择正确、开发板型号匹配;关闭串口监视器后重新上传。

五、课后练习:上拉电阻控制LED(进阶版)

练习要求:用上拉电阻连接按钮控制LED灯,实现“按下按钮点亮,松开按钮熄灭”的功能,掌握上拉电阻的接线与代码适配。

5.1练习提示

  1. 接线方式:采用上拉电阻接线(外接10KΩ电阻)

2.代码适配:上拉电阻模式下,按钮未按下时引脚为高电平(HIGH),按下时为低电平(LOW),需修改逻辑判断条件(与下拉电阻相反);

5.2练习参考代码(内置上拉电阻版)

cpp
//定义引脚
const int buttonPin = 2; // 按钮连接的数字引脚
const int ledPin = 9; // LED连接的数字引脚
bool buttonState; // 存储按钮当前状态

void setup() {
// 启用内置上拉电阻,设置按钮引脚为输入模式
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式
Serial.begin(9600); // 初始化串口,用于调试
}

void loop() {
buttonState = digitalRead(buttonPin);

// 上拉电阻逻辑:按下按钮(低电平),点亮LED;松开(高电平),熄灭LED
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH);
Serial.println("按钮已按下,LED点亮");
} else {
digitalWrite(ledPin, LOW);
Serial.println("按钮已松开,LED熄灭");
}
delay(100); // 延时防抖,稳定信号
}

六、实验总结

本次实验核心是掌握Arduino数字输入的读取方法,理解按钮的传感器属性和上拉/下拉电阻的作用,重点总结3点:

  1. 按钮是简单的通断传感器,通过机械按压实现电路通断,向Arduino传递高/低电平信号;
  1. digitalRead()函数是读取数字输入的核心,返回HIGH(1)或LOW(0),使用前需将引脚设为INPUT模式;
  1. 上拉/下拉电阻的核心作用是避免引脚浮动信号,确保读取稳定,两者接线逻辑相反,可根据需求选择。

对于Arduino初学者,数字输入是基础中的基础,掌握按钮控制LED的实验,能快速理解“输入-判断-输出”的核心逻辑,为后续学习红外传感器、触摸传感器等复杂输入设备打下坚实基础。如果在实验中遇到问题,欢迎在评论区留言交流~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:21:07

还在一个个打开PSD找素材?教你一招,文件夹里秒看设计稿内容

在工作中,我们常遇到这样的情景:电脑里存着成百上千个PSD文件,文件名全是“未标题-1.psd”、“未标题-2.psd”……只能一个个双击打开,眼睁睁看着Photoshop缓慢启动。对设计师、UI前端、电商美工等需要频繁处理PSD的人来说&#x…

作者头像 李华
网站建设 2026/6/10 15:09:18

[东软电量计开发]:ES32L0910本地RTC校准(三)

简介电量计ES32L0910本地有个RTC,初始化的日期是1970-01-01 00:00:00,如果不校准时间,芯片通上电之后会以1970-01-01 00:00:00为起点开始计时,那这个时间和现实的物理时间是相违背的,于是乎我们就需要去校准一下本地RT…

作者头像 李华
网站建设 2026/6/10 15:08:31

浏览器市场与用户画像分析实验

一、实验背景1. 实验目的1. 基于助睿数智(Uniplore)平台完成浏览器日志数据ETL加工,清洗、聚合每日浏览器访问明细数据,生成周活跃、使用频率、时长统计等8张业务表。2. 掌握数据大屏静态布局搭建,完成9个多类型图表&a…

作者头像 李华