为什么要用上拉电阻和下拉电阻?——避免输入引脚处于“悬空”状态

下图是一个没有使用上拉电阻/下拉电阻的电路图:

在按键没有按下时,要读取的输入引脚没有连接到任何东西,这种状态就称为“悬空”

由于附近引脚的电气噪声,从处于“悬空”状态的输入引脚读取到的数值会在高电平和低电平之间来回波动,得到一个不确定的值。

如果用串口监视器将 在没有使用上拉/下拉电阻的情况下 从一个数字引脚读取的输入打印出来,会得到图示的结果:

可以看到此时读取到的输入并不是一个确定的值。

如果换成从模拟引脚读取输入可以更明显地看到输入电压值的波动情况:

只有输入时要考虑上拉电阻和下拉电阻的问题,输出时不用考虑。

上拉电阻

上拉电阻:将输入引脚通过一个10kΩ的电阻上拉到电源上

电路原理图:

  • 开关断开:输入引脚通过一个10kΩ的电阻连接到VCC,引脚读到的是逻辑高电平
  • 开关闭合:输入引脚被短路,VCC直接连接到地,引脚读到的是逻辑低电平

在串口监视器中打印出的结果为:

使用Arduino I/O口内部上拉功能:

ATmega328P 每个I/O端口都内置了20kΩ上拉电阻(包括数字引脚和模拟输入引脚)(注意:没有内置下拉电阻)。

电路连接:

将按钮的一端接到GND,另一端接到输入引脚(这里是D2),如图所示:

代码:

void setup{
...
pinMode(2,INPUT_PULLUP);
...
}

下拉电阻

下拉电阻:将输入引脚通过一个10kΩ的电阻下拉到地

电路原理图:

  • 开关断开:输入引脚通过一个10kΩ的电阻连接到地,引脚读到的是逻辑低电平
  • 开关闭合:输入引脚直接连接到电源,引脚读到的是逻辑高电平

【Arduino学习笔记06】上拉电阻和下拉电阻的更多相关文章

  1. Jquery学习笔记:利用jquery获取select下拉框的值

    jquery不是特别熟练,每次使用不常用的就要百度,特地记录下来. 我的下拉框是: <div class="form-group"> <select class= ...

  2. .net Core学习笔记3 编辑列表并绑定下拉列

    本次主要实现列表的编辑及下拉列表的绑定 先看效果图: 主要用DropDownList绑定下拉列后端代码: 1:定义一个存下拉数据类 public class SelectItem { public s ...

  3. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记

    机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...

  4. iOS学习笔记06—Category和Extension

    iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...

  5. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  6. 【Arduino学习笔记05】Arduino数字输入、输出和脉冲宽带调制 -- 小项目:彩色小台灯

    基本功能: 长按控制按钮开机,长按控制按钮关机(>3s) 通过三个调节按钮调节灯的颜色,每一个按钮分别对应R,G,B值 模式切换:短按控制按钮切换模式(长亮模式/闪烁模式) 元器件清单: Ard ...

  7. Python 学习笔记(上)

    Python 学习笔记(上) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(上) 基础知识 基本输入输出 模 ...

  8. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  9. Web安全学习笔记 XSS上

    Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...

随机推荐

  1. Codeforces Round #501 (Div. 3) D. Walking Between Houses (思维,构造)

    题意:一共有\(n\)个房子,你需要访问\(k\)次,每次访问的距离是\(|x-y|\),每次都不能停留,问是否能使访问的总距离为\(s\),若能,输出\(YES\)和每次访问的房屋,反正输出\(NO ...

  2. ArcGIS处理栅格数据(三)

    六.制作镶嵌数据集(栅格数据集优点:a.浏览速度快:b.入库速度快:c.可指定区域显示) 1.右键目录中的数据库,新建"镶嵌数据集". 2.添加栅格数据. 3.定义金字塔. 4.构 ...

  3. 电影推荐系统---协同过滤算法(SVD,NMF)

    SVD 参考 https://www.zybuluo.com/rianusr/note/1195225 1 推荐系统概述   1.1 项目安排     1.2 三大协同过滤   1.3 项目开发工具 ...

  4. MarkDown(文本编译器)

    MarkDown(一种高效的文本编译器) 推荐使用Typora 点击此处下载 使用方法 1. 首先创建一个文本文件xxx.txt. 2. 然后修改文件后缀为xxx.md.(可以记做玛德...) 3. ...

  5. Cortex-M3 内核中悬起标志位细节逻辑

    对于外设中断,如果通过NVIC_DisableIRQ(xxx)关闭对应NVIC里面的使能位,会导致对应中断Pend位置起,如果清除Pend位时不清外设的中断标志位将导致对应Pend位立刻再次置起.所以 ...

  6. ORM框架对分表分库之分库和分表指定不同的字段

    ORM框架分库分表已实现了 只分表(根据指定字段) 点我查看demo 只分库(根据指定字段) 点我查看demo 既分库又分表(根据相同的字段) 点我查看demo 上面几点之前我在博客中已经写了使用介绍 ...

  7. npm ip

    npm ip webpack $ ip address var ip = require('ip'); ip.address() // my ip address ip.isEqual('::1', ...

  8. rm -rf .git/gc.log

    rm -rf .git/gc.log ➜ test git:(abc) gp Auto packing the repository in background for optimum perform ...

  9. js coverage testing

    js coverage testing 测试覆盖率 istanbul 伊斯坦堡/伊斯坦布尔 https://istanbul.js.org/ jest coverage https://jestjs. ...

  10. 一文搞懂 js 中的各种 for 循环的不同之处

    一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for &quo ...