Arduino控制器就是Arduino电路板。
Arduino先后发布了十多个型号的控制器,有最基础、最经典的Uno,也有高性能的MEGA。下面就介绍常用的Uno控制器和Mega2560控制器。
Uno控制器如图2-8所示。
图2-8 Uno控制器
注意: 现在改进版本的Uno控制器,需要安装厂家提供的驱动程序,才能与Arduino IDE相连接。
Arduino Uno是基于ATmega328P的Arduino开发板。它有14个数字输入/输出引脚(其中6个可用于PWM输出)、6个模拟输入引脚、1个16 MHz的晶体振荡器、1个USB接口、1个DC接口、1个ICSP接口、1个复位按钮。它包含微控制器所需的一切,只需简单地把它连接到计算机的USB接口,或者使用AC-DC适配器,也可用电池,就可以驱动它。Uno控制器的基本参数如表2-1所示。
表2-1 Uno控制器基本参数
利用pinMode()、digitalWrite()和digitalRead()功能,Uno上的14个数字引脚都可用作输入或输出,其工作电压为5V。每个引脚都可以提供或接收最高40mA的电流,都有1个20~50kΩ的内部上拉电阻器(默认情况下断开)。此外,某些引脚还具有特殊功能:串口0(RX)和1(TX),用于接收(RX)和发送(TX)TTL串口数据。这些引脚与ATmega8U2 USB转TTL串口芯片的相应引脚相连。
外部中断:2和3口。这些引脚可以配置成在低值、上升或下降沿,或者数值变化时触发中断。
PWM:3、5、6、9、10和11口,为8位PWM输出提供analogWrite()功能。
SPI:10(SS)、11(MOSI)、12(MISO)、13(SCK),这些引脚支持利用SPI库进行SPI通信。
LED:13口。有1个内置式LED连至数字引脚13。在引脚为高电平时,LED打开;在引脚为低电平时,LED关闭。
Uno有6个模拟输入,编号为A0~A5,每个模拟输入都提供10位的分辨率(即1024个不同的数值)。默认情况下,它们的电压为0~5V,可以利用AREF引脚和analogReference()功能改变其范围的上限值。
TWI:A4或SDA引脚和A5或SCL引脚,支持通过Wire library实现TWI通信。
AREF:模拟输入的参考电压,与analogReference()一起使用。
Mega2560控制器如图2-9所示。
图2-9 Mega2560控制器
本书后面实验所用的控制器均为Mega2560。
Arduino Mega2560是基于ATmega2560的微控制板,有54路数字输入/输出端口(其中15个可以作为PWM输出)、16路模拟输入端口、4路UART串口、16MHz的晶体振荡器、USB连接口、电池接口、ICSP头和复位按钮。简单地用USB连接电脑或者用交直流变压器就能使用。Mega2560控制器基本参数如表2-2所示。
表2-2 Mega2560控制器基本参数
输入输出:54路接口(0~53口)都可作为输入输出,并使用pinMode()、digitalWrite()和digitalRead()功能。5V电压操作,每个接口的最大电流为40mA,并且接口有内置20~50kΩ的上拉电阻。另外,有的接口有特殊功能。
Serial(串口)如下。
Serial 0:0(RX)and 1(TX);
Serial 1:19(RX)and 18(TX);
Serial 2:17(RX)and 16(TX);
Serial 3:15(RX)and 14(TX)。
一共四组串口,其中Serial0也被连接到了Tmega16U2 USB-to-TTL Serial芯片。RX接收数据,TX传输数据。
External Interrupts(外部中断)如下。
2(interrupt 0);
3(interrupt 1);
18(interrupt 5);
19(interrupt 4);
20(interrupt 3);
21(interrupt 2)。
每个引脚都可配置成低电平触发,或者上升、下降沿触发。详见attachInterrupt()功能。
PWM(脉冲调制):2~13口;44~46口。
提供8位PWM输出。由analogWrite()功能实现。
SPI(串行外设接口)如下。
50(MISO),51(MOSI),52(SCK),53(SS)。使用SPI library实现。
LED:13引脚。这是板上自带的LED灯,高电平亮,低电平灭。
TWI:20(SDA)和21(SCL)。使用Wire library实现功能。
模拟输入:Mega2560有16个模拟输入口A0~A15,每个输入口提供10位的分辨率(即2 10 =1024个不同的值)。默认情况下,它们测量0到5V的值。可以通过改变AREF引脚和analogReference()功能来改变变化范围的上限。
AREF:是AD转换的参考电压输入端(用于将模拟口输入的电压与此处的参考电压进行比较),使用analogReference()完成功能。
通信:Arduino Mega2560提供4路UARTs通信,即Serial通信。数据通过ATmega8U2/ATmega16U2的时候,指示灯会闪烁(除了0和1口)。
使用SoftwareSerial library可以使用Mega2560的任意数字接口通信,Mega2560同样支持TWI和SPI通信。
编程:Mega2560使用Arduino IDE环境编程。事先在闪存(Flash Memory)里烧入bootloader引导程序,这样我们就可以每次下载程序了。它使用的是原始的STK500通信协议。