第1章 Arduino简介

1.1 认识Arduino

Arduino是一款源自意大利的开放源代码硬件项目平台,该平台是一块USB接口Simple I/O接口板(包括12通道数字GPIO,4通道PWM输出,6-8通道10bit ADC输入通道),并且使用类似Java、C语言的IDE(集成开发环境)。

Arduino的核心是基于AVR指令集的单片机,但它简化了单片机工作的流程,对AVR库进行了二次编译封装,将复杂的单片机底层代码封装成简单实用的函数,使用者无需关心单片机编程繁琐的细节,如寄存器、地址指针等,从而大大降低了单片机系统开发难度,特别适合老师、学生和业余爱好者使用。

Arduino系列控制器具有的特色如下:

1)开放源代码的电路图设计,程序开发接口免费下载,也可根据需求自行修改。

2)可以采用USB接口供电,也可以外部供电。

3)支持ISP在线烧写,可以将新的“bootloader”固件烧入Arduino的CPU芯片。有了bootloader之后,可以通过USB更新程序。

4)可依据官方提供的PCB和SCH电路图(Eagel格式)来简化Arduino模组,完成独立运作的微处理控制。可简单地与传感器、电子元件等连接,如红外线、光敏电阻、热敏电阻、超声波、舵机等。

5)支持多种互动程序,如:Flash、Max/Msp、VVVV、C、Processing等。

6)在应用方面,利用Arduino突破了以往只能使用鼠标、键盘、CCD等输入方式获取互动内容,而是可以更简单地达成单人或多人游戏互动。

1.2 Arduino资源

Arduino的出现,大大降低了互动设计的门槛,越来越多没有学过电子知识的人,如艺术家、设计师等,开始使用Arduino制作各种充满创意的作品。为了满足不同应用领域的要求,Arduino设计了多款不同型号的开发板,如Arduino Duemilanove、Arduino Nano、Arduino mini、Arduino BT、Arduino Fio、Arduino Uno等。本书针对后面章节的需要,介绍Arduino Uno与Arduino Mega2560两种开发板。

1.2.1 Arduino Uno开发板

Arduino Uno具有14个数字I/O口,6个模拟I/O口,一个复位开关,一个ICSP下载口,支持USB接口。其中,可通过USB接口直接供电,也可以使用单独的7~12V电源供电,具体的资源分配如图1.1所示。

Arduino Uno开发板的各引脚定义如下:

‰数字引脚:0~13

‰串行通信:0作为RX,接收数据;1作为TX,发送数据

‰外部中断:2,3

‰PWM输出:~3,~5,~6,~9,~10,~11

‰SPI通信:10作为SS,11作为MOSI,12作为MISO,13作为SCK

‰板上LED:13

‰模拟引脚:A0~A5(在引脚号前加A,以区分数字引脚)

‰TWI通信:A4作为SDA,A5作为SCL

图1.1 Arduino Uno的资源

1.2.2 Arduino Mega 2560开发板

与Arduino Uno相比,Arduino Mega2560的资源就丰富多了,它具有54个数字I/O口(其中14个可提供PWM输出),16个模拟I/O口,4对串行数据通信口(UART),一个复位开关,一个ICSP下载口,支持USB接口和直流电源供电,具体的资源分配如图1.2所示。

图1.2 Arduino Mega2560的资源

Arduino Mega2560开发板的各引脚定义如下:

‰数字引脚:0~53

‰串行通信:提供4组串行通信端口,0(RX)和1(TX)作为串口1,19(RX)和18(TX)作为串口2,17(RX)和16(TX)作为串口3,15(RX)和14(TX)作为串口4

‰外部中断:提供6个外部中断源,分别是2(外部中断0),3(外部中断1),21(外部中断2),20(外部中断3),19(外部中断4),18(外部中断5)

‰PWM输出:0~13

‰SPI通信:53作为SS,51作为MOSI,50作为MISO,52作为SCK

‰板上LED:13

‰模拟引脚:A0~A15(在引脚号前加A,以区分数字引脚)

‰TWI通信:20作为SDA,21作为SCL

1.3 安装Arduino Uno驱动

在应用Arduino开发环境进行程序设计前,首先要安装Arduino Uno控制板的驱动程序。本节介绍Arduino Uno驱动程序的常规安装方法,并对一种经常导致驱动安装不成功的情况给出了解决方法。

1.3.1 常规Arduino Uno驱动程序安装方法

准备一块Arduino Uno控制板和一条USB连接线,当第一次将Arduino Uno板与电脑相连时,电脑上会出现“找到新的硬件向导”对话框,如图1.3所示,同时控制板上的电源指示灯被点亮。

图1.3 “找到新的硬件向导”对话框

在图1.3中,选择“从列表或指定位置安装(高级)”,点击“下一步”,出现如图1.4所示的对话框。

图1.4 在Arduino开发环境目录下找到驱动程序

选取Arduino开发环境目录下的drivers文件夹,点击“下一步”,完成驱动程序安装,如图1.5所示。

如图1.6所示,在设备管理器中查看新安装的Arduino Uno开发板通过USB转串口所对应的串口号为COM3。

1.3.2 Arduino驱动安装过程出现的问题及解决方法

在上面步骤中,如果按照图1.4所示进行下一步操作后,弹出如图1.7所示的Arduino板驱动程序安装失败的对话框,可通过如下步骤来解决。

图1.5 Arduino驱动程序安装完成

图1.6 在设备管理器中查看USB转串口设备所对应的串口号

图1.7 Arduino驱动程序安装失败

首先把文件mdmcpq.inf拷贝到系统盘(一般是C盘)Windows目录下的inf文件夹里面,其次把文件usbser.sys拷贝到C:\Windows\System32\drivers里面。这两个文件可从其他Windows系统中拷贝过来,或到网络上查找。

然后打开电脑的“设备管理器”对话框,如图1.8所示。

点击右键选中未被电脑识别的Arduino Uno,如图1.9所示,从弹出的快捷菜单中,选择“更新驱动程序”,将弹出如图1.10所示的“硬件更新向导”对话框,依照提示完成Arduino Uno驱动的安装。

图1.8 Arduino Uno在设备管理器中的状态

图1.9 更新Arduino Uno驱动程序

图1.10 Arduino Uno硬件更新向导

按照图1.4的提示,完成Arduino Uno驱动程序更新,如图1.11所示。

图1.11 Arduino Uno硬件更新成功

1.4 Arduino开发环境

Arduino开发环境的主界面如图1.12所示,除了包含File(文件)、Edit(编辑)、Sketch(概述)、Tools(工具)、Help(帮助)这5类菜单外,在菜单栏下方还提供了5个常用的快捷菜单按钮,它们依次为Verify(校验)、Upload(上传)、New(新建)、Open(打开)、Save(保存)。

图1.12 Arduino的开发环境

这5个快捷菜单按钮的具体功能如下:

:Verify(校验),用于完成程序的检查和编译。

:Upload(上传),用于将编译完成后的程序上传到Arduino控制板中。

:New(新建),用于新建一个Arduino程序文件。

:Open(打开),用于打开一个已存在的Arduino程序文件,其文件后缀名为.pde,1.0版本以后的文件后缀名为.ino。

:Save(保存),用于保存当前的程序文件。

下面以Arduino Uno开发板自带的LED灯闪烁的例子,来介绍利用Arduino进行单片机程序开发的具体流程。

1.新建文件

点击New按钮后,新建一个空白的Arduino程序文件,其界面如图1.12所示。

2.串口设置和Arduino控制板型号选择

Arduino控制板驱动程序安装完成后,在“我的电脑→设备管理器”中查看连接到电脑的Arduino板所对应的串口号,如图1.13所示,当前Arduino Uno板对应的串口是COM3。

图1.13 在设备管理器中查看Arduino Uno板对应的串口号

点击“Tools→Serial Port”,在其下拉菜单中选择COM3,如图1.14所示,即完成当前设备的串口配置。

图1.14 在Arduino开发环境选中Arduino Uno板对应的串口号

点击“Tools→Board”,在其下拉菜单中选择“Arduino Uno”,如图1.15所示,即完成当前控制板的型号选择。

图1.15 在Arduino开发环境选中Arduino板的型号

3.程序设计

在Arduino开发环境的程序编辑区中输入程序代码,如图1.16所示。

图1.16 在Arduino的程序编辑区中编写程序源代码

从图1.1可知,Arduino Uno板上LED的引脚是13,则编写使该LED循环点亮-熄灭1秒的程序如下:

int led = 13;
void setup()
{
  pinMode(led, OUTPUT);
}
void loop()
{
  digitalWrite(led, HIGH);   // LED引脚置高电平
  delay(1000);               // 延时1s
  digitalWrite(led, LOW);    // LED引脚置低电平
  delay(1000);               // 延时1s
}
4.程序保存

程序输入完成后,在Arduino开发环境中点击“File→Save”菜单,在当前路径保存文件,或点击“File→Save As”将该文件另存在其他路径。

5.程序编译

点击

(Verify)按钮实现当前程序的编译,程序编译需要一点时间,等完成编译工作后,Arduino开发环境的状态栏会提示“Done compiling(程序已编译完成)”,同时信息提示栏会显示该程序进行编译后的大小,如图1.17所示,该程序编译后的大小为1084bytes。

图1.17 对Arduino程序进行编译

6.程序上传

点击(Upload)按钮将编译成功的程序上传到Arduino Uno控制板,在程序上传过程中,控制板的串口指示灯(RX和TX)会不停闪烁。程序上传完成后,Arduino开发环境的状态栏提示“Done uploading”,如图1.18所示,同时Arduino Uno控制板上的LED会不停闪烁。恭喜你,到此为止,通过一个简单的例子,你已经学会了使用Arduino。

图1.18 上传程序到Arduino Uno控制板