一、数字输入/输出端口 如下图所示,在 Arduino UNO R3 开发板中,标有数字1、0处的端口同时还分别标有字母TX、RX。它们是串口通信的引脚,一般情况下不会去占用。
由于现在的电脑多数只有USB口,一般没有串口,所以在实现Arduino与用户电脑的通信时需要一个转换器(下面左图为Arduino与电脑连接的数据线)。上图中大椭圆圈住的为USB接口,可与电脑直接相连,小椭圆圈住的是将USB转换TTL(晶体管-晶体管逻辑电平)的芯片,官方板采用的是 Atmega 16U2 芯片。
转换的大致示意图
还有一点,其他的2到13号数字引脚中有的带有“~”标志,意思是这些个端口也能进行模拟输出。不过这些引脚输出的不是真正的模拟信号,而是利用PWM(脉冲宽度调制)技术近似拟合成的信号。
二、模拟输入端口
带有大写字母A的引脚就是模拟输入端口(A是指Analog),这些引脚都配备有ADC(模数转换器),可以将外部输入的模拟信号(从引脚上读取到的电平值)转换为可在芯片内部运算的数字信号。Arduino UNO 可以接受 0 ~ 5V的模拟信号。
值得一提的是,Arduino UNO 的模拟输入/输出有精度限制,即 0 ~ 5V的电压值只能用 0 ~ 255的数字表示,具体原因在于Arduino采用了8个bit大小的二进制空间来充当数据传输的计数器,也就是说该计数器只能计255个数,也恰好解释了此前做的模拟信号输入(利用按键开关控制LED的亮度)实验中,为何在代码中设置LED最高亮度不超过255的原因。同理,PWM波的脉冲范围上先也不会超过255,故模拟输出的幅值最高只能到255。
三、电源端口
当Arduino通上电源时,标有3.3V和5V的端口能分别提供3.3V、5V的电压,GND则是接地端口,在此不详细叙述。
四、I/O模式
输出:指信号从外部传输到Arduino;输入:指信号从Arduino传输到外部;(以Arduino为参照物)
当然,Arduino要实现输入和输出离不开各端口/引脚,而Arduino程序中的 INPUT 和 OUTPUT 是用于控制数字引脚的两个常量。
INPUT:通过pinMode()函数可以将某一数字引脚配置成输入模式,它用于让Arduino读取外部传输的数字信号。在该模式下,数字引脚将呈现高阻抗状态,也即接入一个高电阻(有外部电流流入,保护电路),从而使用digitalRead()函数来读取外部信号;
OUTPUT:同理,将数字引脚配置成输出模式后,它可让Arduino通过设置引脚电平的高低来控制外部设备,如LED、电机等等,具体要用到digitalWrite()函数。在该模式下,引脚呈低阻抗状态。
最后,对于模拟输入/输出而言,则在代码中使用analogRead()和analogWrite()函数来实现模拟信号的输入/输出,这两个函数内部能自动初始化引脚的模式,可以不用单独使用pinMode()函数。