arduino 学会使用开关和上拉电阻 您所在的位置:网站首页 薄膜开关按键是有电阻的么 arduino 学会使用开关和上拉电阻

arduino 学会使用开关和上拉电阻

2024-07-16 19:05| 来源: 网络整理| 查看: 265

认识开关

开关

按键开关,就是如上图所示的短暂原件,按下接通,松开断开。

他的内部结构如图所示,

开关内部结构

abcd 对应分别是图1 从左上角开始 逆时针的脚. 他们的规律是 相连不同侧,同侧不相连。

我们按下 ,不同侧不相连。我们按下和没有按下,可以作为数字信号传递给arduino.

当arduino 的引脚设定为 INPUT模式下 可以识别两种状态, HIGH(高电平),LOW(低电平)。

上拉电阻

image-20210208182101141

R1 电阻就是所谓的上拉电阻.

注意上拉电阻其实在这里没有什么分压的作用,而是限流 。等下我会详细的说明。

其实这个问题还比较发杂,我感觉的解释还不够准备,可能会涉及一点三极管的知识,所以我就记录一些我浅显的理解。

简单的理解

但是我们可以就从表面现象触发从表面详细出发。

当 引脚2设置为输入(INPUT)模式时,引脚2为高阻抗状态(100兆欧)

其实此时arduino内部,引脚2也会和接地相连,但是电阻很大,我们可以把引脚2和接地 以及内部相连的那一部分看成一个电压表。

当开关没有闭合的时候,电压表测得就是 整个电源的电压,电路图可以理解成这样,那是 引脚2收到高电平

电压表

当开关闭合的时候, 电压表测得就是 接地到 引脚2那段导线的电压。所以引脚2收到的是低电平。

电压表短路

刚开始理解的时候,我很是不明白 R1有啥作用,现在看来 R1就是不让 引脚2引脚悬空和限流,防止 arduino挂。

当开关闭合的时候,如果没有电阻R1 ,那么+v5 和GND相接 ,arduino就挂了当开关断开的时候,如果没有电阻 R1,那么 引脚2 没有接入任何电路,所以引脚2读取到状态是随机,这样的状态叫引脚悬空。 程序验证 int pushButton = 2; void setup() { // 窗口通信初始化,每秒 9600位 Serial.begin(9600); // 把pushButton 改成输入模式 pinMode(pushButton, INPUT); } // the loop routine runs over and over again forever: void loop() { // 读出按键状态 int buttonState = digitalRead(pushButton); // 输出状态到到监视器 Serial.println(buttonState); delay(1); }

这里遇到了我们从来没有用过的Serial(串行通信),

串口通信Serial

个人电脑可以通过USB端口与Arduino的引脚0(RX)和引脚1(TX) 进行通信。所以当Arduino的引脚0和引脚1用于串行通信功能时,Arduino的引脚0和引脚1是不能做其他用的。你也可以通过Arduino开发环境软件中的串口监视器来与Arduino 控制器进行串口通信,你只需要点击Arduino IDE软件中的“串口监视器”按钮(如下图所示)就可以打开串口监视器。

本次遇到的方法有2

Serial.begin()

设置电脑与Arduino进行串口通讯时的数据传输速率(每秒传输字节数)。可使用以下速率:300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200

Serial.println();

以人类可读的ASCII码形式向串口发送数据.

Serial.println(val) Serial.println(val, format)

参数:

val: 要发送的数据(任何数据类型) format: 指定数字的数据形式或小数的位数(用于浮点数)。

返回值:

返回发送的数据的字节数。

结果

连接图如下: 在这里插入图片描述

串口监视器

按下0,不按下1.

验证

输入上拉模式

arduino内部自带上拉电阻,所以我们要完成上面的操作,完全就可以把引脚设置成 输入上拉模式(INPUT_PULLUP)。

pinMode(pin,INPUT_PULLUP);

使用按钮控制LED 程序 boolean pushButton; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(2,INPUT_PULLUP); // 控制13号引脚的led pinMode(13,OUTPUT); } void loop() { // put your main code here, to run repeatedly: // 读取引脚2的状态 pushButton= digitalRead(2); Serial.println(pushButton); if(pushButton)//如果按钮按没有按下 那么熄灭LED digitalWrite(13,LOW); else digitalWrite(13,HIGH); } 连接图

由于内部自带上拉电阻,所以我们完全不需要外界电阻,也就是不要了上面的这部分电路

image-20210208203520270

实际为:

连接



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有