当前位置: 首页 > 编程日记 > 正文

上拉电阻和下拉电阻_硬件基础:下拉电阻和上拉电阻如何工作

上拉电阻和下拉电阻

by Taron Foxworth

通过塔伦·福克斯沃思(Taron Foxworth)

硬件基础:下拉电阻和上拉电阻如何工作 (Hardware fundamentals: how pull-down and pull-up resistors work)

If you’ve ever wired up a button to an Arduino, you’ve come across this diagram:

如果您曾经将一个按钮连接到Arduino,那么您会遇到以下图表:

At first, this can be confusing. My first thoughts: “Why do I need a resistor? I just want to it to tell me whether the button is being pressed.”

首先,这可能会造成混淆。 我的第一个想法是:“为什么需要电阻? 我只是想告诉我按钮是否被按下。”

After a lot of reading, there wasn’t a simple explanation.

经过大量阅读后,没有一个简单的解释。

这里发生了什么 (What’s going on here)

In that button — AKA a switch—the wires are shaped in the form of an “H”. But the middle isn’t connected — or the circuit isn’t connected — until we press the button.

在该按钮(也称为开关)中,电线的形状为“ H”形。 但是直到我们按下按钮,中间才被连接(或电路未被连接)。

In reality, we want to read from the Arduino a 0 when nothing is connected and a 1 when the button is pressed.

实际上,我们要在未连接任何东西时从Arduino读取0 ,并在按下按钮时读取1

On the Arduino, this is called General Purpose Input Output (GPIO).

在Arduino上,这称为通用输入输出( GPIO )。

So, we can do something like this:

因此,我们可以执行以下操作:

We connect positive (5v, 3.3V, or VCC) to the left side of the circuit.

我们将正极(5v,3.3V或VCC)连接到电路的左侧。

Now, when the button is pressed, the GPIO will read a 1, and all is good.

现在,当按下按钮时,GPIO将读取1 ,一切正常。

Well, no. Let’s take a look at Diagram 2 again:

好吧,不。 让我们再次看一下图2:

We wanted a 0 when nothing is connected, but how can you guarantee this? Currently, there is no way to guarantee the GPIO to be 0.

当没有任何连接时,我们希望为0 ,但是如何保证呢? 当前,无法保证GPIO为0

There is also electromagnetic frequencies in the air that could draw your GPIO to 0 or 1. It could even fluctuate between the two! This way, we can’t be positive it’s a 0 (I’m so bad at puns). This is also known as a logical 0.

空气中也存在电磁频率,可能会使GPIO变为01 。 两者之间甚至可能波动! 这样,我们不能肯定它是0 (我双关语很不好)。 也称为逻辑0

One way to get a logical 0 is to tie the pin to Ground:

获得逻辑0一种方法是将引脚接地。

Yay! So, now it’s a guaranteed logical zero. While pushing the button, it’s going to be 1 now. Right?

好极了! 因此,现在保证是逻辑零。 按下按钮时,现在将为1 。 对?

Well, No.

好吧,不

You just created a short circuit. ?

您刚刚造成了短路 。 ?

This is where the resistor comes in. To avoid a short circuit, we need to add resistance to our circuit. The resistor keeps things under control.

这是电阻器进入的地方。为避免短路,我们需要在电路中增加电阻。 电阻使事物处于受控状态。

Electricity will take the path of least resistance. Your GPIO will now register a 1 when the button is pressed. Like so:

电力将沿着阻力最小的道路前进。 现在,按下按钮后,您的GPIO将注册为1 。 像这样:

Woo Hoo! Now we’re working with something.

呜呼! 现在,我们正在处理某些东西。

Now let’s look at the opposite: pull-up resistors. It’s the same thing but in reverse. While the button is not pressed, the GPIO will register a 1. When you pressed the button, the GPIO will be 0.

现在让我们看看相反的情况:上拉电阻。 这是同一件事,但相反。 当未按下按钮时,GPIO将注册1 。 当您按下按钮时,GPIO将为0

While not pressed, we have the GPIO connected to positive ( VCC ). So, any current that is there will be pulled-up so that the GPIO registers a logical 1.

未被按下时,我们将GPIO连接到正极(VCC)。 因此,存在的任何电流都会被上拉,以使GPIO注册为逻辑1

It’s important to note here that, electricity always wants to go to Ground. So, when we press the button, the current that’s flowing will flow to Ground. Thus, any current that would have been going to the GPIO goes with it, leaving the GPIO at a logical 0.

在此必须注意的是,电总是要接地。 因此,当我们按下按钮时,正在流动的电流将流向地面。 因此,本应流向GPIO的任何电流都会随之流逝,而GPIO保持逻辑0

? The End.

? 结束。

我为什么写这个? (Why did I write this?)

I joined Losant in September of 2016 with no hardware experience. Every single hardware starter kit gives you a button with no explanation of this concept. Hopefully, this helps your light bulb go off too. ?

我于2016年9月加入Losant ,没有硬件经验。 每个单独的硬件入门套件都为您提供了一个按钮,但没有对此概念进行解释。 希望这也有助于您的灯泡熄灭。 ?

This only scratched the surface. If you want to dig deeper, check out these resources:

这只是划伤表面。 如果您想进一步研究,请查看以下资源:

Pull-up Resistors - learn.sparkfun.comAnother thing to point out is that the larger the resistance for the pull-up, the slower the pin is to respond to…learn.sparkfun.com

上拉电阻-Learn.sparkfun.com还要指出的 另一点是,上拉电阻越大,引脚响应的速度就越慢。

I love feedback. So, please let me know if this could be improved. If I totally missed the ball on this, let me know! I would love to make it better for others.

我喜欢反馈。 因此,请让我知道是否可以改进。 如果我完全错过了球,请告诉我 ! 我想为他人做得更好。

翻译自: https://www.freecodecamp.org/news/a-simple-explanation-of-pull-down-and-pull-up-resistors-660b308f116a/

上拉电阻和下拉电阻

相关文章:

时间序列学习笔记4

6. 重采样及频率转换 重采样(resample)表示将时间序列的频率进行转换的过程。可以分为降采样和升采样等。 pandas对象都有一个resample方法,可以进行频率转换。 In [5]: rng pd.date_range(1/1/2000, periods100, freqD)In [6]: ts Series(…

linux驱动编程入门实例

编辑 /*****hello.c*******/ #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init() { printk("<1>hello\n"); return 0; } static void hello…

iOS UIView快速添加事件

给UIView 做一个延展 // // UIViewSKTap.h // MeiGouYouPin // // Created by coder on 2019/10/29. // Copyright © 2019 AlexanderYeah. All rights reserved. // #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN typedef void(^TapBlock)(void); interfac…

node.js中模块_在Node.js中需要模块:您需要知道的一切

node.js中模块by Samer Buna通过Samer Buna 在Node.js中需要模块&#xff1a;您需要知道的一切 (Requiring modules in Node.js: Everything you need to know) Update: This article is now part of my book “Node.js Beyond The Basics”.更新&#xff1a;这篇文章现在是我…

Sublime Text3配置Node.js开发环境

下载Nodejs插件&#xff0c;下载zip压缩包后解压链接: http://pan.baidu.com/s/1hsBk60k 密码: jrcv打开Sublime Text3&#xff0c;点击菜单“首选项&#xff08;N&#xff09;” >“浏览插件&#xff08;B&#xff09;”打开“Packages”文件夹&#xff0c;并将第1部的Node…

修改mysql的root密码

use msyql; update user set passwordpassword(新密码) where userroot; flush privileges; quitnet stop mysql #如果提示 发生系统错误5&#xff0c;就用管理员身份启动cmd.exe 转载于:https://www.cnblogs.com/walter371/p/4065904.html

iOS 开发之便捷宏定义

#define URL(A/*str*/) [NSURL URLWithString:A]// 图片 #define IMAGE(A/*str*/) [UIImage imageNamed:A]// 快速转换字符串 #define LD_STR(A/*str*/) [NSString stringWithFormat:"%ld",A] #define F2_STR(A/*str*/) [NSString stringWithFormat:"%.2f"…

rspec 测试页面元素_如何使用共享示例使您的RSpec测试干燥

rspec 测试页面元素by Parth Modi由Parth Modi 如何使用共享示例使您的RSpec测试干燥 (How to DRY out your RSpec Tests using Shared Examples) “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” — Abraham Lincoln“ 给我…

Windows搭建以太坊的私有链环境

Windows搭建以太坊的私有链环境 1、下载Geth.exe 运行文件&#xff0c;并安装https://github.com/ethereum/go-ethereum/releases/下载后&#xff0c;只有一个Geth.exe的文件2、cmd进入按章目录运行&#xff1a;geth -help看看是否可用geth命令3、在Geth安装目录下放置初始化创…

前50个斐波那契数

它有一个递推关系&#xff0c;f(1)1f(2)1f(n)f(n-1)f(n-2),其中n>23f(n)f(n2)f(n-2)-------------------------------------------- F(1) 1 F(2) 1 F(3) 2 F(4) 3 F(5) 5 F(6) 8 F(7) 13 F(8) 21 F(9) 34 F(10) 55 F(11) 89 F(12) 144 F(13) 233 F(14) 377 F(…

RAC -代替OC 中的代理

学以致用&#xff0c; 有的时候学习了很多理论 却还是忘了实践 OC 中代替代理 简洁编程 #import "ViewController.h" #import <ReactiveObjC.h> #import "SKView.h" interface ViewController ()endimplementation ViewController- (void)viewDidL…

深度学习 免费课程_深入学习深度学习,提供15项免费在线课程

深度学习 免费课程by David Venturi大卫文图里(David Venturi) 深入学习深度学习&#xff0c;提供15项免费在线课程 (Dive into Deep Learning with 15 free online courses) Every day brings new headlines for how deep learning is changing the world around us. A few e…

《音乐商店》第4集:自动生成StoreManager控制器

一、自动生成StoreManager控制器 二、查看 StoreManager 控制器的代码 现在&#xff0c;Store Manager 控制器中已经包含了一定数量的代码&#xff0c;我们从头到尾重新过一下。 1.访问数据库代码 首先&#xff0c;在控制器中包含了标准的 MVC 控制器的代码&#xff0c;为了使用…

StringUtils

/需要导入第三方jar包pinyin4j.jarimport net.sourceforge.pinyin4j.PinyinHelper;import java.util.regex.Matcher; import java.util.regex.Pattern;public class StringUtils {protected static final String TAG StringUtils.class.getSimpleName();/*** 增加空白*/public…

微信支付invalid total_fee 的报错

因为我的测试商品是0.01的 原因是微信支付的金额是不能带小数点的 直接在提交的时候 乘以 100操作 &#xff0c;因为里面设置参数的时候是 以分为单位的 [packageParams setObject: price forKey:"total_fee"]; //订单金额&#xff0c;单位为分

帧编码 场编码_去年,我帮助举办了40场编码活动。 这是我学到的。

帧编码 场编码by Florin Nitu通过弗洛林尼图 去年&#xff0c;我帮助举办了40场编码活动。 这是我学到的。 (I helped host 40 coding events last year. Here’s what I learned.) Our local freeCodeCamp study group in Brasov, Romania just held its 40th event. We even…

HDU 4540 威威猫系列故事――打地鼠(DP)

D - 威威猫系列故事――打地鼠Time Limit:100MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4540Description 威威猫最近不务正业&#xff0c;每天沉迷于游戏“打地鼠”。 每当朋友们劝他别太着迷游戏&#xff0c;应该好好工…

iOS 在每一个cell上添加一个定时器的方案

1 首先创建一个数组&#xff0c;用来创建所有的定时器的时间 - (NSMutableArray *)totalLastTime {if (!_totalLastTime) {_totalLastTime [NSMutableArray array];}return _totalLastTime; }2 当从网络请求过来时间之后&#xff0c;循环遍历&#xff0c;行数和时间作为Key&a…

用字符串生成二维码

需要导入Zxing.jar包import android.graphics.Bitmap;import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix;public class ZxingCode {/** * 用字符串生成…

在JavaScript中重复字符串的三种方法

In this article, I’ll explain how to solve freeCodeCamp’s “Repeat a string repeat a string” challenge. This involves repeating a string a certain number of times.在本文中&#xff0c;我将解释如何解决freeCodeCamp的“ 重复字符串重复字符串 ”挑战。 这涉及重…

杭电2099 整除的尾数

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2099 解题思路&#xff1a;将a扩大100倍之后&#xff0c;再给它从加上i(i从0到99)&#xff0c;一个一个的看哪一个能整除 反思&#xff1a;末两位是00的时候输出的是00&#xff08;这种情况题目里面的测试数据给…

iOS 验证码倒计时按钮

具体使用 [SmsTimerManager sharedManager].second (int)time; [[SmsTimerManager sharedManager] resetTime]; [SmsTimerManager sharedManager].delegate self; [strongSelf updateTime];设置代理方法 更新按钮的标题 (void)updateTime { if ([SmsTimerManager sharedMan…

树莓派centos安装的基本配置

萌新再发一帖&#xff0c;这篇文章呢主要是为大家在树莓派上安装centos以后提供一个问题的解决方案。 首先我呢觉得好奇就在某宝上花了两百来块钱买了一套树莓派&#xff0c;很多人喜欢在树莓派上安装Debian&#xff0c;我呢更青睐用Red Hat的系统&#xff0c;毕竟对Red Hat更熟…

token拦截器阻止连接_如何防止广告拦截器阻止您的分析数据

token拦截器阻止连接TL;DR Theres dataunlocker.com service coming soon (subscribe!), along with the open-sourced prototype you can use for Google Analytics or Google Tag Manager (2020 update).TL; DR即将推出dataunlocker.com服务 (订阅&#xff01;)&#xff0c;以…

使用Fiddler手机抓包https-----重要

Fiddler不仅可以对手机进行抓包&#xff0c;还可以抓取别的电脑的请求包&#xff0c;今天就想讲一讲使用Fiddler手机抓包&#xff01; 使用Fiddler手机抓包有两个条件&#xff1a; 一&#xff1a;手机连的网络或WiFi必须和电脑&#xff08;使用fiddler&#xff09;连的网络或Wi…

strtok和strtok_r

strtok和strtok_r原型&#xff1a;char *strtok(char *s, char *delim); 功能&#xff1a;分解字符串为一组字符串。s为要分解的字符串&#xff0c;delim为分隔符字符串。 说明&#xff1a;首次调用时&#xff0c;s指向要分解的字符串&#xff0c;之后再次调用要把s设成NULL。 …

iOS 标签自动布局

导入SKTagFrame SKTagFrame *frame [[SKTagFrame alloc] init];frame.tagsArray self.bigModel.Tags;// 添加标签CGFloat first_H 0;CGFloat total_H 0;for (NSInteger i 0; i< self.bigModel.Tags.count; i) {UIButton *tagsBtn [UIButton buttonWithType:UIButtonT…

引导分区 pbr 数据分析_如何在1小时内引导您的分析

引导分区 pbr 数据分析by Tim Abraham蒂姆亚伯拉罕(Tim Abraham) 如何在1小时内引导您的分析 (How to bootstrap your analytics in 1 hour) Even though most startups understand how critical data is to their success, they tend to shy away from analytics — especial…

SSL 1460——最小代价问题

Description 设有一个nm(小于100)的方格&#xff08;如图所示&#xff09;&#xff0c;在方格中去掉某些点&#xff0c;方格中的数字代表距离&#xff08;为小于100的数&#xff0c;如果为0表示去掉的点&#xff09;&#xff0c;试找出一条从A(左上角)到B&#xff08;右下角&am…

在Windows 7下面IIS7的安装和 配置ASP的正确方法

在Windows 7下如何安装IIS7&#xff0c;以及IIS7在安装过程中的一些需要注意的设置&#xff0c;以及在IIS7下配置ASP的正确方法。 一、进入Windows 7的 控制面板&#xff0c;选择左侧的打开或关闭Windows功能 。二、打开后可以看到Windows功能的界面&#xff0c;注意选择的项目…