第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控制板