Arduino是一款单片机开发板,它与众不同的地方在于官方提供了函数库供开发者调用,大大降低了初学者开发的难度。本文在arduino uno R3 硬件参数介绍的基础上,再详细介绍下Arduino的引脚编号和使用方式。
一、概况
Arduino上共有44个引脚,其中包括:
- 数字量I/O引脚-14个(引脚编号0-13)
- 模拟量输入引脚-6个(引脚编号A0-A5)
- ICSP引脚-2组(每组6个):可通过编程电缆连接到编程器设备
- VIN引脚 : 该引脚用于使用外部电源为Arduino Uno开发板供电
- 5v和3v3电源接口
- GND接口(共3个)
- IOREF – 该引脚是输入/输出参考,它提供了微控制器工作的参考电压。
- Aref – 模拟输入的参考电压。
二、数字引脚和使用
Arduino上的引脚可以配置为输入或输出。
配置为INPUT的引脚的属性
Arduino(Atmega)引脚默认为输入,因此在将它们用作输入时,不需要使用pinMode()将它们明确声明为输入。并且以这种方式配置的引脚处于高阻抗状态。输入引脚对要采样的电路的要求极小,相当于该引脚前面有一个100兆欧的串联电阻。这意味着只需很少的电流就可以将输入引脚从一种状态转移到另一种状态,并且可以使这些引脚用于实现电容式触摸传感器,读取光电二极管或使用读取模拟传感器等任务。
但是,这也意味着配置为pinMode(pin,INPUT)的引脚,即使未连接任何导线,或者未连接到其他电路的引脚,因为有电噪声或电容耦合的影响,将报告看似随机的引脚状态变化。
上拉电阻,引脚配置为INPUT
如果没有输入,将输入引脚配置成已知的状态通常很有用。这可以通过在输入端增加一个上拉电阻(至+ 5V)或一个下拉电阻(接地电阻)来实现。对于上拉或下拉电阻,10K电阻是一个不错的选择。
配置为INPUT_PULLUP的引脚的属性
Atmega芯片内置了20K上拉电阻,可通过软件进行访问。通过将pinMode()设置为INPUT_PULLUP可以访问这些内置的上拉电阻。这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,而LOW表示传感器打开。
该上拉的值取决于所使用的微控制器。在大多数基于AVR的板上,该值保证在20kΩ至50kΩ之间。在Arduino Due上,它介于50kΩ和150kΩ之间。有关确切值,请参考板上微控制器的数据表。
将传感器连接到配置有INPUT_PULLUP的引脚时,另一端应接地。在简单开关的情况下,这会导致当开关断开时引脚读为高电平,而当按下开关时引脚读为低电平。
上拉电阻提供足够的电流,以使连接到已配置为输入的引脚的LED暗淡点亮。如果项目中的LED似乎工作正常,但效果非常暗淡,则很可能正在发生这种情况。
上拉电阻器由控制引脚为高电平或低电平的相同寄存器(内部芯片存储位置)控制。因此,如果某个引脚被配置为在输入为INPUT时接通上拉电阻,则该引脚如果随后通过pinMode()切换至OUTPUT,则该引脚将被配置为HIGH。这也可以在另一个方向上起作用,并且如果使用pinMode()切换到输入,则处于HIGH状态的输出引脚将设置上拉电阻。
在Arduino 1.0.1之前,可以通过以下方式配置内部上拉:
pinMode(pin,INPUT); //将引脚设置为输入 digitalWrite(pin,HIGH); //打开上拉电阻
注意:数字引脚13比其他数字引脚更难用作数字输入,因为它有LED连接到其上的电阻器,该LED和电阻器已焊接到大多数板上的板上。如果启用其内部20k上拉电阻,则它将挂在1.7V左右,而不是预期的5V,因为板载LED和串联电阻将电压电平拉低,这意味着它始终返回LOW。如果必须将引脚13用作数字输入,请将其pinMode()设置为INPUT并使用外部下拉电阻。
配置为OUTPUT的引脚的属性
通过pinMode()配置为OUTPUT的引脚被称为处于低阻抗状态。这意味着它们可以为其他电路提供大量电流。Atmega引脚可以向其他设备或电路提供(提供正电流)或吸收(提供负电流)高达40 mA(毫安)的电流。这足以点亮LED(不要忘记和LED灯串联的电阻)或运行许多传感器,但这个电流不够运行大多数的继电器、螺线管或电动机。
Arduino引脚短路或试图使用它们运行大电流设备,可能会损坏或破坏引脚上的输出晶体管,或者损坏整个Atmega芯片。通常,这将导致微控制器中的出现一个“死”引脚,但其余芯片仍将正常工作。因此,最好将输出引脚连接到具有470Ω或1k电阻的其他设备,除非特定应用需要从引脚吸收最大电流。
三、模拟输入引脚介绍和使用
Arduino芯片(ATmega8,ATmega168,ATmega328P或ATmega1280)上的模拟输入引脚介绍。
模数转换器
用于Arduino 的ATmega控制器包含一个板载6通道(在Mini和Nano上为8通道,在Mega上为16通道)模数(A / D)转换器。转换器具有10位分辨率,意味着可以返回0到1023之间的整数。对于大多数Arduino用户,模拟引脚的主要功能是读取模拟传感器,而模拟引脚还具有通用输入/输出(GPIO)引脚的所有功能。 (与数字引脚0-13相同)。
因此,如果用户需要更多通用输入输出引脚,而所有模拟引脚均未使用,则这些模拟引脚可用于GPIO。
引脚编号
使用别名A0(用于模拟输入0),A1等,可以将模拟引脚与数字引脚相同地使用。例如,代码看起来像这样,将模拟引脚0设置为输出,并将其设置为HIGH :
pinMode(A0,OUTPUT); digitalWrite(A0,HIGH);
上拉电阻
模拟引脚还具有上拉电阻,其作用与数字引脚上的上拉电阻相同。通过使用以下命令来启用它们:
pinMode(A0,INPUT_PULLUP); //在模拟引脚0上设置上拉
但是请注意,打开上拉电阻会影响analogRead()报告的值。
细节和警告
如果先前已将引脚设置为输出,则AnalogRead命令将无法正常工作,因此,在这种情况下,请在使用AnalogRead之前将其设置回输入。同样,如果该引脚已被设置为高电平作为输出,则当切换回输入时,将设置上拉电阻。