Arduino的软件开发基于一个开源的开发环境,即IDE。IDE兼容Windows、Mac OS和Linux等操作系统,简单易用。本节将详细介绍IDE的安装、驱动和功能。本书只讨论Windows操作系统中IDE的使用。
IDE基于Processing、AVR-GCC和其他开源软件,用Java语言编写,界面简洁、操作简单。Arduino采用C语言编程,并自带多个应用实例和C++类库。由于IDE没有调试的功能,只能将程序下载到开发板上运行,通过IDE提供的串口监视器进行调试。
从Arduino官方网站可下载最新版本,可以选择EXE(即扩展名为.exe的文件)安装版和ZIP(即扩展名为.zip的文件)压缩包免安装版两种。EXE安装版需要按步骤安装,且全部安装,其中包括驱动程序,无须再做任何其他安装。ZIP压缩包免安装版解压后即可使用,无须管理员权限,但需要手动安装驱动程序。
本节以1.8.6版本为例说明IDE的安装过程。下载完成后,得到arduino-1.8.6-windows.exe可执行文件,双击运行该文件,启动安装。安装过程中,操作系统会提示是否允许驱动程序的安装,单击“允许安装”即可。运行后会出现图2-5所示的界面,单击右下角的“I Agree”按钮。
进入图2-6所示的界面,默认全部选中,全部安装需要474.8MB的硬盘空间。单击“Next”按钮,进入图2-7所示的安装路径设置界面。
图2-5 安装的协议界面
图2-6 安装的选项界面
单击“Install”按钮启动安装,进入图2-8所示的安装过程界面。
图2-7 安装路径设置界面
图2-8 安装过程界面
安装过程中会多次出现图2-9所示的驱动程序安装提示,单击“安装”按钮即可。安装完成后出现图2-10所示的界面,单击“Close”按钮完成安装。
图2-9 驱动程序安装提示
图2-10 安装完成界面
将下载完成的arduino-1.8.6-windows.zip压缩包解压到任意目录即可完成安装。在安装目录下双击arduino.exe文件启动IDE,也可用鼠标右键单击arduino.exe文件,在打开的快捷菜单中创建IDE的开始菜单快捷方式或桌面快捷方式,启动IDE。
IDE启动完成界面如图2-11所示,默认打开上一次打开的项目(如SOS)。
图2-11 IDE启动完成界面
启动后默认语言为英语,可单击“File>Preference”命令进入“首选项”对话框选择语言或设置是否显示行号、字体大小等。简体中文环境下的“首选项”对话框如图2-12所示。
图2-12 首选项界面
注意,只有IDE重启后,首选项中的设置才能生效。IDE中文界面如图2-13所示。
图2-13 IDE中文界面
IDE界面包含了菜单工具栏、常用功能按钮区、文本编辑器、消息区和文本控制台,界面右上角有一个“串口监视器”按钮,界面底部显示开发板的类型和串口号,如图2-14所示。IDE连接Arduino开发板之后,能下载程序到所连接的开发板,还能与开发板进行通信。
图2-14 IDE界面功能说明
使用IDE编写的代码被称为项目(sketches),这些项目被写在文本编辑器中,以扩展名为.ino的文件形式保存,IDE中的文本编辑器有剪切/粘贴和搜索/替换等功能。当保存、上传以及出现错误时,消息区会显示反馈信息。文本控制台会以文字形式显示IDE的输出信息,包括完整的错误信息以及其他消息。整个窗口的底部会显示当前选定的开发板和串口号等信息。常用功能按钮区包含验证、上传、新建、打开、保存以及串口监视器等功能按钮。
注意:在IDE 1.0之前的版本中,项目的保存格式为.pde,在1.0以及之后的版本中依然可以打开.pde的文件,但软件会自动将其重命名为.ino。
常用功能按钮区的按钮功能如下。
① 验证:检查代码编译时的错误。
② 上传(也作下载):编译代码并且上传到选定的开发板中,细节请查看后面的“上传”内容。
③ 新建:弹出一个新建项目的窗口,可在该窗口中输入新的项目代码。
④ 打开:弹出一个包含项目文件夹在内的所有项目的菜单,选中其子菜单中的一个项目,会打开相应的代码,新的项目会覆盖当前的项目。注意这个菜单不会滚动,如果你要打开的项目在列表的最后,那么需要通过菜单中的“文件>项目文件夹”来选择。
⑤ 保存:保存项目。
⑥ 串口监视器:打开串口监视器。
其他命令能够在菜单工具栏中找到,菜单工具栏包含5个部分:文件、编辑、项目、工具和帮助。这些部分与执行的操作和内容有关,所以只有那些与当前操作有关的部分才能使用。
(1)文件
●新建:创建一个新的项目。创建后项目中已经自动完成了一段Arduino程序的最小结构的代码编写。
●打开:允许通过计算机的文件管理器打开一个指定的项目。
●打开最近的:提供一个最近打开过的项目的列表,可以通过选择打开其中一个。
●项目文件夹:显示当前项目文件夹中的项目,选中其中的一个,会弹出新的窗口并打开相应的代码。
●示例:显示IDE和库文件提供的每一个例子,所有这些例子通过树形结构显示,这样就能通过主题或库的名字很容易找到对应的示例程序。
●关闭:关闭当前选中的项目窗口。
●保存:用当前的文件名保存项目,如果文件还没有命名,则会弹出“项目文件夹另存为”对话框,要求输入一个文件名。
●另存为:允许用另一个文件名保存当前的项目。
●页面设置:显示用于打印的“页面设置”对话框。
●打印:按照页面设置中的设置发送当前的项目给打印机。
●首选项:打开“首选项”对话框,能够设定IDE的参数,例如IDE的语言环境。
●退出:关闭所有IDE窗口,当下次打开IDE时会自动打开同样的项目。
(2)编辑
●复原:复原在文本编辑器中的一步或多步操作。
●重做:当复原之后,可以通过重做再执行一遍相应的操作。
●剪切:删除选择的文本并放置在剪贴板中。
●复制:将选中的文本放置在剪贴板中。
●复制到论坛:复制项目中的代码到剪贴板中,复制的内容包括完整的语法、颜色、提示等,可以粘贴到论坛中。
●复制为HTML格式:以HTML格式复制项目中的代码到剪贴板中,可以将代码嵌入网页。
●粘贴:将剪贴板中的内容放在文本编辑器的光标处。
●全选:选中文本编辑器的所有内容。
●注释/取消注释:选中行的开头,增加或移除注释标记符“//”。
●增加缩进:选中行的开头,增加一段缩进的位置,文本内容会相应地向右移动。
●减少缩进:选中行的开头,减少一段缩进的位置,文本内容会相应地向左移动。
●查找:打开查找和替换窗口,在这个小窗口内,可以根据几个选项在当前的项目中查找特定的文字。
●查找下一个:高亮显示下一个在查找窗口中指定的文字(如果有的话),同时将光标移动到对应的位置。
●查找上一个:高亮显示上一个在查找窗口中指定的文字(如果有的话),同时将光标移动到对应的位置。
(3)项目
●验证/编译:检查代码中编译的错误,代码和变量使用存储区的情况会显示在文本控制台。
●上传(也作下载):编译并通过设定的串口将二进制代码上传到选定的Arduino开发板中。
●使用编程器上传:这将覆盖Arduino开发板中的引导程序;需要使用“工具>烧录引导程序”命令来恢复控制板,这样下次才能再通过USB串口上传程序。不过这种形式允许项目使用芯片的全部存储区。
●导出已编译的二进制文件:保存一个.hex文件作为存档或用其他工具给开发板上传程序。
●显示项目文件夹:打开当前项目所在的文件夹。
●加载库:在代码开头通过#include的形式添加一个库文件到项目中,更多细节请参考库的内容。另外,通过这个功能,能够访问库管理器,并且能够从.zip文件中导入新库。
●添加文件:添加源文件到项目中(会从当前位置复制过来)。新的文件会出现在项目窗口的新选项卡中。可以通过窗口右侧的三角形图标按钮的选项卡菜单命令来删除文件,选项卡菜单位于“串口监视器”按钮的下方。
(4)工具
●自动格式化:格式化之后代码看起来会更美观。比如,花括号内的代码要增加一段缩进,而花括号内的语句则要缩进更多。
●项目存档:将当前的项目以.zip形式存档,存档文件放在项目所在的目录下。
●编码修正并重新加载:修正编辑字符与其他系统字符间可能存在的差异。
●串口监视器:打开串口监视器,通过当前选定的串口查看与Arduino开发板之间交互的数据。如果当前Arduino开发板支持打开串口复位的话,这个操作会重启控制器。
●开发板:选择使用的Arduino开发板,详细信息参考相应Arduino开发板的介绍。
●端口:这个菜单包含了计算机上所有的串口设备(实际的串口设备和虚拟的串口设备),每次打开“工具”菜单时,这个列表都会自动刷新。
●编程器:当不是通过USB转串口的连接方式给Arduino开发板或芯片上传程序的时候就需要通过这个菜单选择硬件编程器。一般不需要使用这个功能,除非要为一个新的Arduino开发板烧录引导程序。
●烧录引导程序:这个功能允许烧录引导程序到Arduino开发板上的微控制器,如果是正常使用Arduino或Genuino开发板,这个功能不是必须使用的。不过如果购买了一个新的ATmega微控制器(通常都不包含引导程序),那么这个功能非常有用。在为目标板烧录引导程序时要确保从“开发板”菜单中选择正确的开发板。
(5)帮助
通过“帮助”菜单能够轻松地找到和IDE相关的各种文件。在未联网的情况下能够找到入门、参考资料、IDE使用指南以及其他本地文件,这些文件是网站资源的复制文件,通过它们能够链接到Arduino网站。
●在参考文件中寻找:这是“帮助”菜单中唯一的交互功能,这样能够根据选中的部分直接跳转到相关的参考文件。
IDE采用项目的方式对程序进行管理:所有的代码保存在一个统一的位置,可以通过单击菜单工具栏“文件>项目文件夹”选项或常用功能按钮区中的“打开”按钮,从项目文件夹中打开一个项目。第一次运行Arduino软件的时候会自动创建一个项目文件夹,可以通过“首选项”对话框来改变项目文件夹的位置。
允许在项目中使用多个文件(每个文件对应一个选项卡),这些文件可以是正常的Arduino代码文件(扩展名不可见),也可以是C文件(扩展名为.c)、C++文件(扩展名为.cpp)或头文件(扩展名为.h)。
上传程序之前,需要通过“工具>开发板”以及“工具>端口”选择正确的选项。在Windows操作系统中,通常是COM1或COM2,或COM4、COM5、COM7甚至更大(USB接口板),通常在Windows操作系统的设备管理器中查看USB串口设备的串口号。
选择了正确的开发板和端口,则当单击常用功能按钮区中的按钮或在“项目”菜单中选择“上传”命令时,当前的Arduino开发板就会自动重启,然后开始上传。旧版本的开发板(Diecimila之前)没有自动重启功能,所以当开始上传时需要按开发板上的重启按钮。上传时能看到RX和TX灯开始闪烁。当上传完成时,IDE将显示上传完成或上传错误的信息。
项目上传时,用到了Arduino的引导程序,这是一个在微控制器中运行的小程序,这个程序允许在没有其他附加硬件设备的情况下上传代码。引导程序在开发板重启时会运行几秒,此时就能够将项目上传到微控制器中。当引导程序运行时,开发板上的LED灯(接13脚)会闪烁(例如重新启动时)。
C++类库为项目提供了额外的功能,例如,硬件的使用和数据的处理。若在项目中使用库,需要选择菜单工具栏“项目>加载库”命令,在代码开头通过#include的形式添加一个或多个库文件到项目当中。因为库会随项目上传到开发板中,故会增加代码对存储空间的占用。如果不再需要一个库,简单的做法就是在代码中删除相应的#include部分。
在参考文件中有库的列表,一些库已包含在Arduino的软件中,另外一些则可以从不同的网站或库管理器下载。IDE软件从1.0.5这个版本开始,允许从一个.zip文件中导入一个库并用在项目中,具体参照第三方库安装指南。
自定义类库的方法请参见3.7节。
可以直接添加第三方硬件到项目文件夹所在目录的hardware文件夹中,硬件安装必须包含开发板定义(出现在开发板菜单项中)、核心库、引导程序以及编程器定义。步骤是首先创建一个hardware的文件夹,然后将第三方硬件解压到相应的文件夹下(不要使用“arduino”作为子目录的名称,这样有可能改变原本的Arduino平台)。卸载第三方硬件只需简单删除文件夹即可。
创建第三方硬件的详细内容可以参考第三方硬件说明。
串口监视器显示Arduino或Genuino(USB或串口)发送的数据。若要发送数据到开发板,需要在文本框中输入文本,然后单击“发送”按钮或按Enter键。注意要选择合适的波特率,这个波特率要与程序中Serial.begin后的参数一致。注意在Windows、Mac OS或Linux操作系统中,当打开串口监视器的时候,Arduino或Genuino会重启(程序会重新开始运行)。开发板也能与Processing、Flash和MaxMSP等软件通信。
一些首选项能够通过“首选项”对话框设定(Mac OS操作系统中在“Arduino”菜单下打开该对话框,Windows或Linux操作系统中在文件菜单下打开该对话框)。其他的设定能够在“首选项”对话框中设定的目录中找到。
从1.0.1版本开始,IDE已被翻译成30多种语言文字,IDE会根据系统的语言选择默认的语言。
如果想手动更改语言,打开IDE,在“首选项”对话框中选择编辑器语言。在弹出的下拉列表框中选中相应的语言,然后重新启动软件使所选中的语言生效。如果操作系统不支持所选语言,IDE会采用英文。可以返回Arduino的默认设置,让IDE根据系统语言选择相应的语言,只需要在下拉菜单中选中“系统默认”,当重启IDE时这个设置会生效。同样地,改变系统设置后,也需要重新启动Arduino才能使设置生效。
IDE语言选择界面如图2-15所示。
图2-15 IDE语言选择界面
选择开发板有两个作用:设定编译或上传程序时的参数(比如CPU的速度和波特率),以及设定烧录引导程序时的文件以及熔丝位设置。一些开发板只是引导程序不一样,所以即使在一个特定的选择下上传成功了,在烧录引导程序之前也要仔细检查一下。不同Arduino开发板的参数如表1-1所示。
Arduino的文件目录如图2-16所示。
需要手动安装驱动程序时,可以选择安装目录“/Arduino/drivers”下的驱动程序进行安装。
注意该目录中有两个libraries目录,安装目录“/Arduino/hardware/arduino/avr/libraries”下包含Arduino板上硬件接口的类库函数。IDE自带的其他不在板上的输入/输出接口模块的类库包含在Arduino/libraries目录下。用户自定义类库也要复制到该目录下才可在IDE中使用。
在安装目录“\hardware\arduino\avr\cores\arduino”下,Arduino IDE对数据类型和main()等进行了封装。任何一个Arduino平台的核心,至少要包括Arduino.h和main.cpp两个文件。
(1)arduino.h:该文件通常用于函数声明、常量定义和类型定义等。在#include语句中使用该文件时,当Arduino IDE执行编译时,它会被自动引用到程序中。
(2)main.cpp:任何一个C/C++源代码文件都是从main函数开始的,Arduino也不例外。Arduino封装了main()函数,在该函数中设置了setup()和loop()两个接口函数。setup( )先执行且仅执行一次,通常设置引脚和初始化,setup( )执行后,loop( )不断地循环执行该函数体内的语句。Arduino不仅支持C语言,还支持部分C++扩展特性。
图2-16 Arduino的文件目录
main.cpp代码如下,
#include <Arduino.h> //Declared weak in Arduino.h to allow user redefinitions. intatexit(void (* /*func*/)()) { return 0; } //Weak empty variant initialization function. //May be redefined by variant files. voidinitVariant()__attribute__((weak)); voidinitVariant() { } voidsetupUSB()__attribute__((weak)); voidsetupUSB() { } int main(void) { init(); initVariant(); #if defined(USBCON) USBDevice.attach(); #endif setup(); for (;;) { loop(); if (serialEventRun) serialEventRun(); } return 0; }