Arduino Uno 引脚 –

Arduino Uno 板有 20 多个引脚,可用于许多不同的应用。在这篇文章中,我将为您提供 Arduino Uno 主要引脚的完整实用概述。

如果您刚开始使用 Arduino,或者您已经是一名软件开发人员并且想要了解有关 Arduino 板上软件和硬件之间桥梁的更多信息,那么您来对地方了!

在这篇文章中,您将看到:

  • 您可以使用哪些引脚
  • 你可以用它们做什么
  • 以及有关如何将其他设备连接到 Arduino 引脚的一些提示

我还将为您提供一些可与每个引脚功能一起使用的传感器/执行器示例。

这篇文章的重点是 Arduino Uno 板,但大多数解释(电路板上的引脚号除外)也适用于任何其他 Arduino 板。

>> 观看此视频作为本文的附加资源:


您正在学习如何使用 Arduino 构建自己的项目?

查看Arduino For Beginners并逐步学习。


观看视频后,请订阅 Robotics Back-End Youtube 频道,这样您就不会错过下一个教程!

Arduino Uno引脚图

以下是您可以在 Arduino Uno 板上找到的所有引脚的全局视觉描述。

一开始你可能会发现这很难理解。那么,让我们一一分解每种引脚。

接地引脚

如果关于接地有一件事(而且只有一件事)您应该记住,那就是:始终将电路的所有接地连接在一起,并确保所有组件都正确连接到地面。原理图上接地引脚通常用 GND 表示。

接地对于 Arduino 板测量和设置任何电压至关重要。基本上,电压是两点之间的电势差:这里取接地点和另一点。

因此,如果电路中的所有部件都连接到同一接地,则可以比较所有电压并且它们的值是相关的。如果没有共同点,那么3.3V是什么意思?是否大于您从电路另一点测量的 5V 值?

这就像测量两个人之间的身高差:如果其中一个人站在一个盒子上,那么地面参考就不一样。如果您不将两个人放在同一水平面上,您就无法获得有价值的测量结果。

好吧,我不会讲更多细节,但你明白这一点。

Arduino 电源引脚

电源有两种方式:

  • 您必须通过外部电源为 Arduino Uno 板供电
  • 您还可以为插入主板的一些组件供电

为 Arduino Uno 板供电

要为 Arduino Uno 板供电,您有不同的选择。第一种方法是使用 USB 电缆将 Arduino 板连接到计算机 - 通常您在订购 Arduino 板时会得到一根 USB 电缆。

您还可以使用直流电源插孔为 Arduino 板提供 7-12V 电源。如果您使用的是由 Arduino 供电的一些业余爱好伺服电机,您可能需要使用直流电源插孔。来自 USB 电缆的功率较低。它非常适合您的板和计算机(或其他 Arduino 板)之间的通信,但可能不足以为某些实际电机提供动力。

因此,您已经有 2 种为 Arduino Uno 板供电的方法。现在,如果您查看电路上的电源引脚,您会看到 Vin 引脚。

您可以使用此引脚为您的主板提供 7-12V 电压。当您需要使用外部电源并将其直接连接到您的主板时非常实用。而且,正如您所猜测的,如果您使用 Vin,您还需要正确使用接地,将其连接到外部电源的接地。

请注意,USB 和 DC 电源插孔已集成接地,可连接到您插入的任何设备。事实上,USB连接器周围你可以触摸到的金属部分是直接接地的!

通过 Arduino Uno 电源引脚为组件供电

正如您所猜测的,每当您将外部组件连接到 Arduino Uno 板时,您都需要先将其接地。

然后您可以使用多个不同的引脚来为其供电。其中有3.3V和5V电源引脚。

注意 – 这很重要 – Arduino Uno 在 5V 下运行。因此,对于我们将在本文下面看到的每个输出引脚,请务必记住这一点。如果将 3.3V 组件插入 5V 电源,可能会损坏该组件。

有 2 种替代方案:使用 Arduino(集成电压桥)的 3.3V 电源,或使用带有电压电平转换器的 5V 电源。您可以轻松地将 3.3V 组件连接到 5V 组件,前提是您使用电阻器或直接使用电平转换器组件在它们之间转换电压。

Arduino 数字引脚

您可以在 Arduino Uno 板上找到 14 个数字引脚。它们很容易识别,电路板上有从 0 到 13 的数字。

在数字引脚上读/写

您将使用数字引脚从某些组件(传感器)读取数据并将数据写入其他组件(执行器)。

数字引脚只能有 2 种状态:低电平或高电平。您可以将它们视为二进制引脚。

低电平表示该引脚上的电压为 0V。HIGH 表示 Vcc,对于 Arduino Uno 来说是 5V。

在实际使用数字引脚之前,您需要配置其模式。数字引脚可以处于输入模式或输出模式。当处于输入模式时,您将使用它来读取数据。当处于输出模式时,您将使用它来写入数据。

设置引脚模式后(通常在 Arduino 程序的 setup() 函数中使用 pinMode()),您将能够使用 digitalRead()/digitalWrite() 读取/写入引脚的状态。

如果您已将引脚设置为输入模式,则可以读取其状态,即高电平或低电平。

读取时,任何施加到该引脚的电压低于 0.8V 将被视为低电平,任何大于 2V 的电压将被视为高电平。因此,我再次强调,你应该正确地将电路中的所有接地连接在一起,否则Arduino Uno将无法读取有价值的信息!如果您没有获得可靠且稳定的数据,请务必先检查地面,问题很可能来自那里。

有关如何使用数字引脚控制组件的示例,请查看此Arduino LED 教程

有关如何使用数字引脚从传感器读取数据,请查看此Arduino 按钮教程

如果您想使用数字引脚达到更高级的水平,请查看如何使 digitalWrite() 更快

脉宽调制

一些数字引脚可用于写入 PWM。

PWM(脉冲宽度调制)基本上是一种仅具有高/低 (5V/0V) 状态的特定电压(例如:4.1V)的方法。PWM 产生一个以给定频率运行的脉冲——Arduino Uno 为 500Hz。然后,占空比参数将告知每个脉冲处于高状态或低状态的百分比。

高/低状态的频繁变化产生平均电压输出。例如,在 50% 占空比(50% 的时间为高电平,50% 的时间为低电平)时,输出电压将为 2.5V。

当然,这个解释确实很简单,但这就是开始使用 Arduino PWM 所需了解的全部内容。

现在,您只能在某些数字引脚上使用 PWM,这些引脚的编号旁边有一个“~”。与 PWM 兼容的 Arduino Uno 引脚为引脚 3、5、6、9、10 和 11。因此您有 6 个引脚,您可以使用 AnalogWrite() 函数创建 PWM。

这对于控制一些需要精细电压调节的执行器非常有用,而不仅仅是打开或关闭。

如果我们以LED为例,您可以使用analogWrite()函数来修改LED的亮度。

中断引脚

而且……数字引脚还有另一个可用的功能!您可以将其中一些用作 Arduino 程序中的中断引脚。

对于 Arduino Uno,这些引脚的选择非常有限。只有数字引脚 2 和 3 可以用作中断引脚。

那么,它是如何运作的呢?

当您创建 Arduino 程序时,您必须知道您的代码是逐行运行的,不可能存在多线程。

假设您将按钮连接到中断引脚(并接地!)。在您的 Arduino 程序中,您可以附加一个特定的功能,以便在按下按钮时触发。因此,您可以直接使用中断行为来启动您的函数,而不必连续读取按钮状态。将其视为推送通知,就像在手机上一样。它会告诉您何时有新内容或需要执行特定操作。了解如何在代码中使用 Arduino 中断。

但是,这并不意味着您已经解决了多线程问题。当程序的执行切换到中断调用的函数时,它也会停止当前程序的执行,只有在中断函数完成后才返回到当前程序。

如果您想了解有关如何使用 Arduino 进行多任务处理的更多信息,请查看有关此主题的完整教程

Arduino 模拟引脚

您可以在 Arduino Uno 板上找到 6 个模拟引脚。您会在电源引脚附近找到它们,并且它们很容易识别,从 A0 到 A5。

从模拟引脚读取值

模拟引脚对于读取不能只是 0 或 1 的值非常有用。假设您有一个电位计并且想要获取电位计值的百分比。使用数字引脚,您可以知道电位计何时处于最小和最大位置,但除此之外什么也没有。使用模拟引脚,您可以获得介于两者之间的所有值。

请注意,这些引脚上的模拟功能仅用于读取。通常它们甚至被称为“模拟输入引脚”。您无法通过这些引脚写入模拟值,请不要忘记!

那么,模拟输入引脚如何工作?

首先,它将接收输入电压并读取该电压。假设引脚读数为 2.5V。然后,ADC(模拟数字转换器)会将模拟值转换为 Arduino 程序可以理解的数字值。

Arduino Uno 板有一个 10 位 ADC。如果您使用其他 Arduino 板,分辨率可能会有所不同。那么,10 位是什么意思呢?简而言之,分辨率为 2^10 = 1024。因此,从模拟输入引脚读取数据时获得的值在 0 到 1024 之间。

回到我们的 2.5V 示例:2.5V 是 5V (Vcc) 的 50%。在您的 Arduino 程序中,您将获得值 512。根据该值,您可以轻松地反转计算并获取有关所施加电压的信息。

另外,一开始可能会很令人困惑,请记住 PWM 的 AnalogWrite() 函数仅适用于某些数字引脚,根本不适用于模拟引脚。

使用模拟引脚作为数字引脚

即使您只能从模拟引脚读取,您也可以选择将其用作“简单”数字引脚。(但事实并非相反)

如果引脚可以读取 0 到 5V 之间的任何值,那么它将只能读取低于 0.8V(低)的值和高于 2V(高)的值。

要将模拟引脚用作数字引脚,您只需设置该引脚的模式,就像在 Arduino 程序的 setup() 函数中设置数字引脚一样。然后,您可以使用 digitalWrite() 和 digitalRead() 函数,它将完美运行。

通过 Arduino 引脚的通信协议

这就是事情开始变得有趣的地方。通过 Arduino Uno 引脚的通信协议将允许您使用更先进的传感器和执行器。您将创建更复杂和有用的应用程序。

Arduino Uno 板可通过电路引脚使用 3 种主要通信协议:UART、I2C 和 SPI。

但是……电路上什么也没有显示!

不要惊慌,通信协议正在使用电路上现有的引脚。

事实上,大多数引脚都可配置为使用备用功能,有时仅一个引脚就有多达 4 个备用功能。但让我们让事情变得简单。

UART 引脚 – 串行

UART 是 Arduino 最常用的协议——至少在您开始使用时是这样。

当您将 Arduino Uno 板连接到计算机并通过串行库进行通信时,嗯……您正在使用 UART!

您还可以直接在 Arduino Uno 板上找到 UART 所需的 2 个引脚,即引脚 0 和 1:RX 和 TX。R代表“接收”,T代表“发送”。这是双向通信。

请注意,USB 使用的串行与引脚 0 和 1 使用的串行相同。因此,如果您想将另一个设备连接到主板的 RX/TX 引脚,请记住不要通过 USB 使用串行。

在其他一些 Arduino 板(例如 Mega)中,有几种不同的可用 UART。但对于 Arduino Uno,你只有一个。

但是,如果您想使用更多 UART,则始终可以使用SoftwareSerial 库来实现。该库允许您将任何其他数字引脚用于 UART 目的。虽然这里有一个很大的区别:“真正的”串行使用 Arduino Uno 板的硬件功能,速度非常快并且不消耗太多计算能力。SoftwareSerial 则相反:它用计算能力来补偿硬件。因此,首先从标准硬件 UART 开始,然后您将看到您的应用程序是否需要更多串行端口(在这种情况下,我建议您切换到 Arduino Mega 以获得许多硬件 UART)。

要将组件连接到 Arduino Uno 引脚并使用串行通信,您需要 4 根电缆:

  • 组件的 RX 和 Arduino 的 TX 之间的一根
  • 组件的 TX 和 Arduino 的 RX 之间的一根
  • 如果组件没有外部供电,则使用一根电缆从 Arduino 的电源引脚为其供电
  • 还有……一个用于连接地线

如果您有兴趣通过串行在 Raspberry Pi 板和 Arduino 板之间进行通信,请查看此Raspberry Pi Arduino 串行教程

I2C 引脚

I2C是一种总线协议,具有多主/多从架构。但为了简单起见(大多数应用程序都需要这一点),我们只讨论架构的单主/​​多从部分。

基本上,想象一下所有数据都经过的数据总线。巴士的车头就是主人。现在,您可以将任何新组件添加到总线,并将其配置为从属组件。此外,每个组件都有自己的 ID。

主设备将通过总线上的通信并提供从设备的 ID 来向从设备发送数据和请求。如果主机需要响应,从机会将响应发送回总线。一旦主机收到响应,它就可以发送下一个指令/请求。

通常,您将使用 Arduino Uno 板作为主控板,并将一个或多个组件(通常是传感器)连接到 I2C 总线,每个组件都有不同的 ID。在软件方面,您将使用开源 Arduino Wire 库

但是,您应该将所有这些组件连接到 Arduino Uno 的哪个引脚?

对于 I2C,您无法直接在电路板上看到任何指示。

您需要 4 根电缆才能使用 I2C 总线:

  • 1个连接SCL引脚(时钟)
  • 另一根用于 SDA 引脚(数据)
  • 为总线上的组件供电
  • 并达成共识

I2C 兼容组件的一些示例:

  • MPL3115A2温度传感器
  • MPU6050陀螺仪+加速度传感器
  • TCS34725 颜色传感器

SPI 引脚

SPI 是另一种基于主从架构的协议。

您可以使用它将 Arduino 板连接到多个设备。请注意,通信速度比 I2C 和 UART 快,但不适合中长距离通信(电缆超过几厘米)。至于其他通信协议,您可以直接在Arduino程序上使用开源SPI库。

当您使用 SPI 设备并希望将其连接到 Arduino 板上的某些引脚时,以下是您需要使用的引脚:

用于连接具有 SPI 引脚的设备的电缆系统稍微复杂一些。您至少需要 6 根电缆:

  • SCK 引脚(时钟)
  • MISO 引脚(主输入,从输出)
  • MOSI 引脚(主输出、从输入)
  • 每个CS/SS(片选/从机选择)一个。对于每一个额外的从属设备,您都需要再添加一个与 Arduino 引脚的连接。
  • 一个为组件供电
  • 以及一个共同点

SPI 兼容设备的一些示例:

  • AS5047D磁性位置传感器
  • MAX31855 热电偶转数字传感器

开始使用 Arduino Uno 引脚

正如您在这篇文章中看到的,在使用 Arduino Uno 引脚时,您有多种选择。

如果您刚刚开始使用 Arduino,请先尝试使用数字和模拟基本功能。

然后,您可以开始进一步使用中断、PWM 输出等。

最后,您可以将无限数量的传感器/执行器连接到 Arduino Uno 板来创建您的下一个项目!

您还可以将多个 Arduino 板甚至Raspberry Pi 板连接在一起。

好了,现在您已经对 Arduino Uno 引脚有了更好的了解,是时候动手实践了!

如果您不知道如何处理所有这些引脚,请查看我在本文中作为示例介绍的不同设备,这可能是开始并获得更多想法的好方法。

Arduino Uno 引脚 –的更多相关文章

  1. Arduino uno 引脚说明

    http://openhome.cc/Gossip/Books/mBlockArduino1-3and1-4.html http://swf.com.tw/?p=406

  2. 详解Arduino Uno开发板的引脚分配图及定义(重要且基础)

    首先开发板实物图如下: 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开发板的引脚分配图及定义.Arduino Uno微控制器采用的是Atme ...

  3. Arduino Uno微控制器采用的是Atmel的ATmega328

    参考:https://www.yiboard.com/thread-831-1-1.html 在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开 ...

  4. 8元电调调参教程(使用Arduino Uno)| BLHeli无刷电调的固件烧写及调参

    前言 淘某上有款8元电调,性价比很高,但是需要简单设置一下 1.材料清单 (1)Arduino UNO开发板 (2)BLHeliSuite 16.7.14.9.0.1 调参软件及固件已上传Gitee: ...

  5. ARDUINO UNO数字引脚端口上电后不稳定状态。

    ARDUINO UNO数字引脚端口上电后不稳定状态. 在使用4*4矩阵键盘时,遇到了输入端的电平无法稳定,一直被识别为高电平. 在发现这一问题后,首先检查程序是否出错.检查后发现程序没有任何问题. 于 ...

  6. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...

  7. [Arduino] Arduino Uno R3 中文介绍

    Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板.UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出 ...

  8. Arduino UNO仿真开发环境设置和仿真运行

    一. Proteus仿真平台简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司).它不仅具有其它EDA工具软件 ...

  9. Arduino UNO的原理图

    Arduino UNO的原理图是开源的,所以可以从arduino网站上下载它: https://www.arduino.cc/en/Main/ArduinoBoardUno 原理图PDF: https ...

  10. Arduino UNO R3

    Arduino 常见型号 当然还有 LilyPad,附图: 最常见的自然是UNO,最新版是第三版R3: 国内也有一些改进的板子.我用的是一般的板子,拿到货也只能默默了. 简介 The Uno is a ...

随机推荐

  1. SQL专家云快速解决阻塞

    背景 当数据库突然产生严重阻塞时,运维人员要快速找到阻塞的源头并处理,让业务快速恢复.但是大多数运维人员只掌握了sp_who2.sp_lock等简单的语句,存在以下不足: 找不到真正的源头,过程中会误 ...

  2. 2023-06-22:一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试 给你一个二维数组 classes ,其中 classes[i] = [passi, totali] 表

    2023-06-22:一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试 给你一个二维数组 classes ,其中 classes[i] = [passi, totali] 表 ...

  3. 记一次Native memory leak排查过程

    1 问题现象 路由计算服务是路由系统的核心服务,负责运单路由计划的计算以及实操与计划的匹配.在运维过程中,发现在长期不重启的情况下,有TP99缓慢爬坡的现象.此外,在每周例行调度的试算过程中,能明显看 ...

  4. 怎么把 session 中的实体类转换回来

    例子 : 如上比如user user1=new user(): user1.id=1: user1.name="张三": session["user1"]=us ...

  5. 为什么从 MVC 到 DDD,架构的本质是什么?

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 本文来自于小傅哥新编写的<Java简明教程>系列内容,本教程意在于通过简单.明了. ...

  6. .net 6 winform启动器:调用CMD命令行执行dotnet命令启动.net core程序并将控制台输出日志输出到winform textbox实现实时日志显示

    背景 历史遗留问题,生产车间运行的一个.net core signalr程序使用命令行程序启动,经常由于生产人员误操作将光标停留在控制台上导致程序假死,丢失部分测试数据,车间随便找了一台win10系统 ...

  7. String、StringBuffer、StringBuilder 的区别?

    一. 介绍 String.StringBuffer.StringBuilder: 前言: String.StringBuffer.StringBuilder 均在java.lang包下: String ...

  8. Windows安装SSH服务器

    1.打开Win的设置并在设置中找到应用 2.在应用中依次选择应用和功能 可选功能 3.在可选功能中选择添加功能 (OpenSSH客户端默认已存在) 选中OpenSSH服务器后点击下方的安装 4.快捷键 ...

  9. 关于vue的一些使用总结

    了解响应式原理后对代码的一点小重构 在操作一个响应式变量的时候,可能会多次去取这个响应式变量的值,这就意味着会多次执行依赖收集中的get,可以用一个局部变量缓存下来,这样只需要一次get操作. // ...

  10. 使用 python 快速搭建http服务

    python -m SimpleHTTPServer 8888 使用上面的命令可以把当前目录发布到8888端口. 直接浏览器访问 但是这条命令是当前运行的,不是后台运行的,也就是说如果Ctrl + C ...