一个开发板,无论是Arduino、89C51 单片机、STM32 抑或是树莓派,开发人员除了首要考虑其本身芯片的好与坏、程序开发的便捷性,其次考虑的就是开发板的接口,它影响着我们使用什么传感器或执行元件。
Arduino UNO 的接口众多,本书选择8 种接口来进行介绍,并配合机器人使用。
1. 供电接口
Arduino 的工作电压是5~12 V,共有3 个供电接口,见图3-1-3。使用Arduino UNO 扩展板是为了方便针脚的插接,其供电方式是将锂电池与 Arduino UNO 扩展板进行连接,通过图 3-1-3 的③号电源接口向Arduino UNO 开发板供电。
Arduino UNO 开发板供电配件如图3-1-4 所示。
图3-1-3 供电接口
图3-1-4 开发板供电配件
2. 数字接口
按照开发使用习惯,常把2~13 接口称为数字接口,见图3-1-3。数字接口又分两种:普通数字接口和PWM 数字接口。
1)普通数字接口
普通数字接口是指2、4、7、8、12、13 号接口,这些普通数字接口可以用来产生高电平或低电平、读取高电平或低电平。涉及的函数如表3-1-2 所示。
表3-1-2 普通数字接口涉及的函数
续表
2)PWM 数字接口
PWM,也就是脉冲宽度调制,用于将一段信号编码为脉冲信号(一般是方波信号),是在数字电路中达到模拟输出效果的一种手段,即使用数字控制产生占空比不同的方波(一个不停在开与关之间切换的信号)来控制模拟输出。若要在数字电路中输出模拟信号,就可以使用PWM 技术实现。
如图3-1-3 所示,PWM 数字接口是指带“~”符号的数字接口,有3、5、6、9、10、11 号接口,这些PWM 数字接口除了可以像普通数字接口那样使用,还可以用来产生或读取脉冲(PWM)。涉及的函数如表3-1-3 所示。
表3-1-3 PWM 数字接口涉及的函数
续表
3. 模拟接口
模拟接口有6 个,如图3-1-3 右下角所示,A0~A5 就是模拟接口,它们具有读取或产生PWM 的功能,使用的函数是(www.daowen.com)
使用方向和用途与PWM 数字接口类似。其关系可用数学中的并集来表示:
普通数字接口∪模拟接口= PWM 数字接口
4. 中断接口
中断接口是一种高级端口,Arduino UNO 有2 个中断接口,触发中断的方式有5 种,见表3-1-4。
表3-1-4 中断接口
假设需要使用 2 号数字接口在接收到高电平时触发中断函数something();,程序语句即为表3-1-4 中所示,特别指出,2 号数字接口对应中断号0(INT0)。
5. 串 口在很多时候,Arduino 需要与其他设备相互通信,而最常见、最简单的方式就是串口通信。Arduino Uno 开发板上,硬件串口位于Rx(0)和Tx(1)引脚上(见图 3-1-3),这两个接口可以连接蓝牙串口模块,然后与手机等一些设备进行蓝牙通信。然而,还需知道Arduino 的USB 口通过转换芯片与Rx(0)和Tx(1)这两个引脚连接,该转换芯片会通过USB 接口在计算机上虚拟出一个用于 Arduino 通信的串口,实际上下载程序也是通过串口进行的,不过是有线连接。而直接使用Rx(0)和Tx(1)这两个引脚的蓝牙串口模块可进行无线传输。
6. IIC 接口
I2C(Inter-Integrated Circuit,又称IIC)总线是一种由Philips(飞利浦)公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C 总线产生于20 世纪80 年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。I2C 总线最主要的优点是其简单性和有效性。
I2C 总线只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL,如图3-1-3 左上角所示。通信原理是通过对SCL 和SDA 线高低电平时序的控制,来产生I2C 总线协议所需要的信号进行数据的传递。如图3-1-5 所示,I2C 通过上拉电阻接正电源,当总线处于空闲状态时,两条信号线保持为高电平。连接到总线任意一个器件输出为低电平,都会使总线的信号变低,即每个器件的SDA 和SCL 都是线“与”关系。
图3-1-5 I2C 总线物理拓扑图
I2C 传输规范有三点,阐述如下,可以结合图3-1-6 进行理解。
(1)数据位的有效性。
I2C 总线进行数据传送时,时钟信号(SCL)为高电平期间,数据线(SDA)上的数据必须保持稳定,但允许SDA 产生起始信号、终止信号。只有时钟线上的信号为低电平期间,数据线上的高电平和低电平状态才允许变化,也就是SCL 为低电平时进行数据传输。
(2)起始信号和终止信号。
起始信号:当SCL 为高电平时,SDA 由高变低。
终止信号:当SCL 为高电平时,SDA 由低变高。
(3)I2C 总线传输格式。
发送到SDA 线上的每个字节必须是8 位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个ACK 应答位,数据从最高有效位(MSB)开始传输。
图3-1-6 数据传输原理
Arduino 的I2C 接口常用于连接显示屏等,本书将在4.2.6 节中进行具体介绍。Arduino 的I2C 通信使用wire 库,函数的使用却与串口使用比较类似。例如:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。