Arduino与LabVIEW开发实战 奥松机器人 20141009

2020-03-01 316浏览

  • 1.
  • 2.推荐序 Arduino 从未停止过开源创新的步伐,自其问世以来为无数创客 提供了大大小小的开源控制器硬件,因其程序语法简单易懂,开发资 料丰富,短短几年时间迅速蹿红创客界风靡全球。最新推出的 Arduino Yun 更是得到了众多创客们的追捧,因其整合了 Arduino 易用的架构 和 Linux 系统的强大功能,可以轻松连接到复杂的 Web 服务,并融合 多种功能,俨然成为即将改变我们家庭生活的的又一大利器。 硬件平台的推陈出新,离不开软件的支持协作,由美国国家仪器 (简称 NI)公司推出的 LabVIEW 图形化设计软件平台,可以完美地 与 Arduino 硬件结合,其与传统文本形式编程语言不同,打开软件, 你会发现眼前是一幅由各种各样的图形块与彩色线条组成的图画。图 形化软件编程界面直观,技术门槛低,易学易懂,能够给开发者提供 更多创新机会,更重要的是 LabVIEW 可以帮助开发者在不同阶段使 用不同版本,根据硬件平台的不同,合理选择。对于学生连续性的学 习,有助于帮助他们未来将 LabVIEW 用于未来实际工作当中。 本人有幸通过 Arduino 学习交流与作者相识,先于广大读者阅读 全书内容。本书前两章分别对 Arduino 硬件和 LabVIEW 软件做了基 础性的讲解,随即在第 3 章对软硬件两者之间如何连接进行了全面剖 析,如 RS485、蓝牙、射频、ZigBee 等都是当下最热门的通讯方式, 图文并茂,配以实验案例教学,促使读者快速加深对知识的认知和理 解。本书最后分基础实验、应用进阶、实战项目三章讲述,这部分的 内容是本书最大亮点,作者精挑细选的实验案例完全考虑初学者的学 习能力和对实验的兴趣,由浅入深,力求通俗易懂。本书的出版将继 续推动 Arduino 和 LabVIEW 在中国的普及和推广,同时也会大大提 高中国学生对编程创作的热情。 如果你想玩转 Arduino,相信 LabVIEW 这款图形化编程软件是 你的最佳选择。最后,希望你能够通过本书的学习创造出更多好玩新 奇特的作品。 于欣龙 奥松机器人创始人、资深创客
  • 3.前 言 Arduino 是开源硬件的典型代表,Arduino 控制器板卡、简单易用的 Arduino IDE,以及 Arduino 简单易懂的语言,淡化了单片机底层硬件的知识,极大地简化了单片机的软硬件设 计,让很多不懂单片机等底层硬件的科技爱好者也可以进行电子制作,同时社区论坛拥有很 多爱好者制作的参考示例可供参考使用,而且社区论坛和参考示例也在不断地增加。 LabVIEW 是图形化编程软件的代表,采用图形化编程语言进行软件设计,具有表达形 象、易于阅读、便于理解的优点。只需要选择合适的控件并合理布局,很轻松的就可以构建 出一个漂亮的仪器仪表界面;框图编程部分采用直观的连线方式实现函数之间的数据传递。 同时拥有大量的操作面板控件和不同功能的函数库,可供大家调用。 Arduino 和 LabVIEW 均为将原来复杂繁琐的单片机设计和软件设计变得简单化,更加 亲民、易于接受和学习;同时 Arduino 控制器需要简单易用的上位机软件,实现较为复杂的 运算与显示功能;LabVIEW 软件需要便宜好用的下位机,负责采集数据和输出执行的任务; 如果将两者结合起来组成上下位机系统,各司其职,分工协作,即可实现两者的功能互补。 而如何使用 Arduino 控制器和 LabVIEW 软件,并将两者有机结合起来,做出基于 Arduino 控制器与 LabVIEW 软件的实际应用和项目,是本书讨论的主要内容。  目标读者 本书适合大中专院校的仪器仪表类、电子类、通信类、计算机类等专业学生阅读,还适 合 Arduino 学习者、LabVIEW 学习者以及渴望利用 Arduino 与 LabVIEW 实现自己想法的创 客们。  关于本书 我在南京理工大学攻读硕士学位的时候, 跟随导师采用 LabVIEW 软件来完成科研课题, 发现很多课题之中都有数据采集需求,而且对采样速率和采样精度的要求不高,但却需要花 费几万块去购买 NI 公司的数据采集卡,这极大地限制了在对成本敏感的项目中使用 LabVIEW 软件。然后,我就开始自己采用单片机搭配高性能的 A/D 芯片制作简易的数据采 集设备,以满足低速、低成本的数据采集任务,并成功的应用于很多项目中。 后来,在网上遇到了南京嵌入之梦工作室的丁齐老师和郑岩峰、戴晓天、金小飞等人, 一起联合成立了南京创客空间。在创客空间的活动中,发现很多人都使用 Arduino 来做原型 开发,深入学习了 Arduino 之后觉得如获至宝,便将 Arduino 与 LabVIEW 结合起来制作了 很多有趣儿的玩意儿。这时候,还发现了 NI 公司提供了 LabVIEW Interface for Arduino 工具 包,试用之后觉得模拟采样库比较实用,可将 Arduino 控制器当作数据采集板卡使用,如果 使用高精度的基准源则采集精度将会更高,同时说明 NI 公司很看好 Arduino 等开源硬件的 发展。 极客工坊的郝弘毅站长向我推荐了机械工业出版社的张国强先生,为了让更多的人能学 习 Arduino 与 LabVIEW 的原型设计,我写作了此书。 本书的中 Arduino 程序代码和 LabVIEW 程序都可以在新浪博客(blog.sina.com/shenjin xin2008)和个人博客(www.shenjinxin.org)上下载,并提供技术支持服务。  本书的内容及阅读建议
  • 4.全书按照由易到难的顺序编写,同时各章节相对独立,分为 Arduino 基础篇、LabVIEW 基础篇、如何连接 Arduino 与 LabVIEW、基础实验篇、应用进阶篇和实战项目篇,共六个 章节。 Arduino 基础篇:讲述了 Arduino 的分类、如何搭建 Arduino 开发平台、数字输入/输出、 模拟输入/输出、串口通信和时间函数,并穿插以实际操作的实验,以加深理解。 LabVIEW 基础篇:讲述了虚拟仪器的组成、LabVIEW 基础知识、数据结构、程序结构、 常用的波形图表和波形图、基本的文件 I/O 操作、信号分析与处理,典型的设计模式,同时 通过例子说明问题的解决方法。 Arduino 与 LabVIEW 的连接:主要讲述了如何实现 Arduino 与 LabVIEW 的连接,包括 LabVIEW Interface for Arduino 方式、串口控制方式、无线串口方式和 Ethernet 方式四个部 分,其中无线串口方式介绍了 Bluetooth、APC220 和 ZigBee 三种,而且在前三者中 Arduino 控制器都是通过串口与 LabVIEW 进行通讯,Ethernet 方式则是通过 Ethernet 模块和网络与 LabVIEW 进行通讯。 基础实验篇:主要讲述了利用 LabVIEW Interface for Arduino 工具包,实现对 Arduino 控制器及外部设备的控制,其中将 Arduino 控制器作为数据采集卡使用,扩展了 LabVIEW 廉价采集卡的选用范围。 应用进阶篇:主要讲述了 7 个 Arduino 与 LabVIEW 的应用,包括多路数据采集、热电 偶高温监测、多路温度数字测量、温湿度测量、超声波测距、红外线测距和小量程电子称重 系统,讲解了传感器及器件的选用与编程方法,并给出了 Arduino 控制器的代码清单和上位 机程序框图。 实战项目篇:主要讲述了 4 个综合性的项目,包括无线遥控智能小车、个人小型气象站、 智能农业监测系统和基于网络的远程智能家居系统,深入地讲解了系统的构成、硬件连接、 软件设计和故障排除方法。 如果您是普通读者,不了解 Arduino 和 LabVIEW,建议您从第一章开始按部就班的阅 读到最后一个章节,并做好每一个实验,这可能会花费您大量时间和精力,但是这有助于您 尽快地上手 Arduino 和 LabVIEW,同时您需要注意本书提示部分的内容。 如果您是 Arduino 玩家,建议您跳过第一章直接阅读第二章 LabVIEW 基础篇,会使用 LabVIEW 软件之后,接着阅读第三章 Arduino 与 LabVIEW 的连接方式,在实现 Arduino 与 LabVIEW 的连接之后,再去阅读后面的基础实验篇、应用进阶篇和实战项目篇,最终做出 属于自己的很酷的 Arduino 与 LabVIEW 的作品。 如果您是 LabVIEW 程序员,建议您从第一章 Arduino 基础篇开始阅读,熟悉 Arduino 控制器并完成每一个 Arduino 实验之后,然后跳过 LabVIEW 基础篇去阅读第三章 Arduino 与 LabVIEW 的连接方式,实现 Arduino 与 LabVIEW 的连接之后,再去阅读后面的基础实 验篇、应用进阶篇和实战项目篇,最终做出属于自己的 Arduino 与 LabVIEW 的作品。 如果您是 Arduino 与 LabVIEW 的玩家,您可以阅读本书的任意章节,并可以根据本书 的介绍来复现本书的应用和项目,由于拥有较好的功底,您最终可以做出属于自己的很酷的 Arduino 与 LabVIEW 的作品。  致谢 在本书结稿之际,首先感谢本书的策划张国强先生,他对 Arduino 的关注促使了本书的 出版,并在写作过程中给予了非常宝贵的建议与意见。 其次,感谢我的妻子冯倩女士对我的支持与鼓励,冯倩女士对本书的校对和修改也做了 很多的工作。另外,在本书的编写中,南京理工大学的陆旭峰、袁涛、杜超、王荣振,南京 2 / 95
  • 5.创客空间的郑岩峰、金小飞、江玉明、陈大庆、戴晓天,深圳柴火创客空间的陈威等人也参 与了本书的校对和修改。 本书的程序代码在 openjumper 的 Zduino Uno 和 OCROBOT 的 Mango II 兼容控制器上 验证通过,感谢成都智能盒子有限公司的陈吕洲先生和杭州橡木桶科技有限公司的郝弘毅先 生为我提供 Arduino 兼容控制器。 最后,感谢阅读本书的读者您花费时间和精力阅读本书。 由于作者经验和时间有限,本书也是对 Arduino 与 LabVIEW 的一种探索,书中难免存 在错误和不足之处,恳请各位专家和读者不吝赐教。联系邮箱:shenjinxin2008@126.com。 作者:沈金鑫 2013.10 于南京理工大学 3 / 95
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.第一章 Arduino 基础 Arduino 是什么? 当你第一次接触 Arduino 的时候,或许你还不知道上述问题的答案,那都没有关系,本 章将带你认识我们的朋友——Arduino,重点介绍如何使用 Arduino。 本章首先介绍 Arduino 控制器的由来及分类,然后教你如何搭建 Arduino 开发平台,最 后讲述 Arduino 的基础输入/输出并穿插实验例程,包括数字输入/输出、模拟输入/输出、串 口通信和时间函数。 1.1 Arduino 是什么? 首先,我们来解答第一个问题——Arduino 是什么? Arduino 维基百科的定义:Arduino,是一个开源的单片机控制器,它使用了 Atmel AVR 单片机,采用了基于开放源代码的软硬件平台,构建于开放源代码 simple I/O 接口版,并且 具有使用类似 Java,C 语言的 Processing/Wiring 开发环境。 从维基百科对 Arduino 的定义中,我们可以知道 Arduino 不仅是一个基于 Atmel AVR 单片机的控制器,而且是一个开源系统,包含了硬件(Arduino 控制板)、软件(Arduino IDE) 以及开放源代码的开源精神。相比于 Arduino 硬件控制板,Arduino 的软件及开源精神是 Arduino 的精髓所在。 自从 2005 年被推出以来,随着使用者和爱好者的不断增加,Arduino 控制器得到了快 速的发展。同时,Arduino 设计团队不断推出各式各样、更加强大的 Arduino 控制器及 Arduino 扩展板,以满足不同使用者的应用需求。 截止到现在,Arduino 开发团队已经推出的 Arduino 控制器有数十种之多,主要有 Uno、 Due、Leonardo、Mega 2560、Mega ADK、Micro、Mini、Nano、Ethernet、Esplora、ArduinoBT、 Fio、Pro、LilyPad 等。 除了 Arduino 官方设计和生产的 Arduino 控制器,还有产生了很多 Arduino 兼容控制器。 因为 Arduino 采用开源协议,任何人或公司均可以利用 Arduino 公布的文档来生产和销售 Arduino 控制器,但是不能使用 Arduino 作为商标。 由于 Arduino 兼容控制器不需要支付昂贵的代理费和商标费,所以价格较低,受到国内 外广大 Arduino 爱好者的欢迎,从一定程度上降低了 Arduino 使用者的门槛和的花费,进而 使得 Arduino 得到了极大的推广。 1.1.1 Arduino 控制器系列 由于 Uno 为标准板,拥有 Arduino 所有基本功能,使用得最为广泛;Mega 2560 拥有较 多的输入/输出管脚,适用于需要较多管脚的大型项目或实验;Leonardo 带有 USB 接口, 适用于需要 USB 功能的应用;Mega ADK 带有 USB Host 接口,可以连接 Android 手机;Due 是 Arduino 第一款基于 32 位 ARM cortex-M3 核心的控制板,拥有更快的速度和更大的存储 容量;Arduino 兼容控制板是 Arduino 控制板的重要组成部分,助推了 Arduino 开源硬件的 发展,而且价格相对低廉,易于在购物网站购买。 基于以上原因,下面主要介绍 Uno、Mega 2560、Leonardo、Mega ADK、Due。开发者 应根据自己的使用需要和项目的需求,选择合适型号的 Arduino 控制器或兼容控制器。 9 / 95
  • 12.1. Arduino Uno Arduino Uno 是 Arduino USB 接口系列的最新版本,也是 Arduino 控制板使用得最广泛 的型号。 Uno 的处理器核心是 ATmega328,具有 14 路数字输入/输出口(其中 6 路可作为 PWM 输出),6 路模拟输入,一个 16MHz 晶体振荡器,一个 USB 接口,一个电源插座,一个 ICSP header 和一个复位按钮。Arduino Uno 控制器如图 1-1 所示。 图 1-1 Arduino Uno 2. Arduino Mega 2560 Arduino Mega2560 也是采用 USB 接口的核心电路板,最大的特点就是具有多达 54 路 数字输入输出,特别适合需要大量 IO 接口的设计。 Mega2560 的处理器核心是 ATmega2560, 同时具有 54 路数字输入/输出口(其中 16 路可作为 PWM 输出),16 路模拟输入,4 路 UART 接口,一个 16MHz 晶体振荡器,一个 USB 口,一个电源插座,一个 ICSP header 和一个复位按钮。Arduino Mega2560 也兼容为 Arduino Uno 设计的扩展板。Arduino Mega2560 控制器如图 1-2 所示。 图 1-2 Arduino Mega2560 3. Arduino Leonardo 10 / 95
  • 13.Leonardo 是 Arduino 家族的新成员,最大的特点是集成了 USB 驱动,可以模拟鼠标或 键盘的功能,和 Uno 有同样的外观和接口,只是将方头 USB 换成了 micro USB。 Leonardo 的处理器核心是 Atmega32u4,拥有 20 个数字输入/输出引脚(其中 7 个可用 于 PWM 输出、12 个可用于模拟输入),一个 16 MHz 的晶体振荡器,一个 Micro USB 接 口,一个 DC 接口,一个 ICSP 接口,一个复位按钮。Arduino Leonardo 控制器如图 1-3 所示。 图 1-3 Arduino Leonardo 4. Arduino Mega ADK Arduino Mega ADK 是采用 USB 接口的核心电路板,它与 Mega2560 最大的不同就是 Mega ADK 上多了一路 USB 主控制接口用来与 Android 手机连接。 Mega ADK 的处理器核心是 ATmega2560,同时具有 54 路数字输入/输出口(其中 16 路可作为 PWM 输出),16 路模拟输入,4 路 UART 接口,一个 16MHz 晶体振荡器,一个 USB 口,一个电源插座,一个 ICSP header 和一个复位按钮。Arduino Mega ADK 控制器如 图 1-4 所示。 图 1-4 Arduino Mega ADK 5. Arduino Due Arduino Due 是第一块基于 32 位 ARM 核心的 Arduino 控制板,以满足需要更快速度和 更大存储容量的 Arduino 控制板的应用需求。 Arduino Due 的处理器核心是 Atmel SAM3X8E ,拥有 54 个数字 IO 口 (其中 12 个可 用于 PWM 输出),12 个模拟输入,4 路 UART 接口,一个 USB OTG 接口, 两路 DAC(模 11 / 95
  • 14.数转换),一个电源插座,一个 JTAG 接口,一个复位按键和一个擦写按键。Arduino Due 控制器如图 1-5 所示。 与其他 Arduino 控制板的区别:①使用 32 位 ARM 核心的处理器,比以往使用 8 位 AVR 核心的其他 Arduino 更加强大;②84Mhz 的 CPU 时钟频率;③96 KBytes 的 SRAM;④512 KBytes 的 Flash;⑤内部集成 DMA 控制器,极大地提高了运算速度。 注意 与其他 Arduino 有所区别,Arduino Due 的工作电压为 3.3V。I/O 口可承载电压也为 3.3V。如果使用更大的电压,比如 5V 加到一个 I/O 口,可能会烧了芯片。 图 1-5 Arduino Due 6. Arduino 兼容控制器 随着 Arduino 的不断发展,国内也出现了一大批制造 Arduino 兼容控制器的厂商,这也 使得国内的爱好者能够以较为低廉的价格购买到 Arduino 兼容控制器及配件。而且在制造 Arduino 兼容控制器的时候,多数厂商也对 Arduino 原版控制器进行合理的优化和改进。 国内 Arduino 兼容控制器生产厂商主要有 DFrobot、 SeeedStudio (深圳矽递)、 OpenJumper (成都智能盒子)、OCROBOT(杭州橡木桶科技),他们的 Arduino 兼容控制器如图 1-6 至图 1-9 所示。 图 1-6 DFRduino Uno R3 图 1-7 Seeeduino V3.0 12 / 95
  • 15.图 1-8 MANGO II(ATmega328P) 图 1-9 Zduino Uno R3 1.1.2 Arduino Uno 控制器 Arduino Uno 是 Arduino 的典型控制板,拥有 Arduino 所有基本功能,使用得最为广泛, 而且本书的应用篇和项目篇都是基于 Arduino Uno 来设计的,所以此处重点介绍 Arduino Uno 的硬件部分,其他型号 Arduino 控制板硬件介绍可以参考 Arduino 官方网站 www.arduino.cc。 截止到本书出版之际,Arduino Uno 已经发布到第三版,最新版为 Arduino Uno R3,其 板载资源分布如 1-10 图所示。 图 1-10 Arduino Uno 控制器 1. 控制器        处理器 ATmega328 工作电压 5V 输入电压(推荐) 7-12V 输入电压(范围) 6-20V 数字 IO 脚 14 (其中 6 路作为 PWM 输出) 模拟输入脚 6 IO 脚直流电流 40 mA 13 / 95
  • 16.     3.3V 脚直流电流 50 mA Flash Memory 32 KB (ATmega328,其中 0.5 KB 用于 bootloader) SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) 工作时钟 16 MHz 2. 电源 Arduino Uno 可以通过 3 种方式供电,而且能自动选择供电方式。  外部直流电源通过电源插座供电。  电池连接电源连接器的 GND 和 VIN 引脚。  USB 接口直接供电。 电源引脚说明  VIN --- 当外部直流电源接入电源插座时,可以通过 VIN 向外部供电;也可以通过此 引脚向 Uno 直接供电;VIN 有电时将忽略从 USB 或者其他引脚接入的电源。  5V --- 通过稳压器或 USB 的 5V 电压,为 Uno 上的 5V 芯片供电。  3.3V --- 通过稳压器产生的 3.3V 电压,最大驱动电流 50mA。  GND --- 地脚。 3. 存储器 ATmega328 包括了片上 32KB Flash,其中 0.5KB 用于 Bootloader,同时还有 2KB SRAM 和 1KB EEPROM。通常情况下,Arduino 的存储空间即是其主控芯片所集成的存储空间, 也可以通过使用外设芯片的方式,扩展 Arduino 的存储空间。  Flash:32KB 其中 0.5KB 分作 BOOT 区用于储存引导程序,实现串口下载程序的功能,另外的 31.5KB 是用户可以储存程序的空间,可以满足一般的应用设计。  SRAM:2KB SRAM 相当于计算机的内存,在 CPU 进行运算时,需要在其中开辟一定的存储空间。 当 Arduino 断电或者复位后,其中的数据都会丢失。  EEPROM:1KB EEPROM 全称为电可擦写可编程只读存储器,是一种用户可更改的只读存储器,特 点是 Arduino 断电或者复位后,其中的数据不会丢失。 4. 输入输出  14 路数字输入输出口:工作电压为 5V,每一路能输出和接入最大电流为 40mA。每 一路配置了 20-50K 欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的 功能:  串口信号 RX(0 号)、TX(1 号): 与内部 ATmega16U2 USB-to-TTL 芯片相 连,提供 TTL 电压水平的串口接收信号。  外部中断(2 号和 3 号):触发中断引脚,可设成上升沿、下降沿或同时触发。  脉冲宽度调制 PWM(3、5、6、9、10、11):提供 6 路 8 位 PWM 输出。  SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI 通信接口。 14 / 95
  • 17. LED(13 号):Arduino 专门用于测试 LED 的保留接口,输出为高时点亮 LED, 反之输出为低时 LED 熄灭。  6 路模拟输入 A0 到 A5:每一路具有 10 位的分辨率(即输入有 1024 个不同值),默 认输入信号范围为 0 到 5V,可以通过 AREF 调整输入上限。除此之外,有些引脚有 特定功能。  TWI 接口(SDA A4 和 SCL A5):支持通信接口(兼容 I2C 总线)。  AREF:模拟输入信号的参考电压。  Reset:信号为低时复位单片机芯片。 5. 通信接口    串口:ATmega328 内置的 UART 可以通过数字口 0(RX)和 1(TX)与外部实现串 口通信;ATmega16U2 可以访问数字口实现 USB 上的虚拟串口。 TWI(兼容 I2C)接口:A4(SDA)、A5(SCL),可用于 TWI 通信,兼容 I2C 通 信。 SPI 接口:10(SS)、11(MOSI)、12(MISO)、13(SCK),可用于 SPI 通信。 1.2 搭建 Arduino 开发平台 上一节我们讲解了 Arduino 控制器系列,其中重点介绍了 Arduino Uno 控制器的硬件资 源,这一小节主要讲解驱动安装、Arduino IDE(集成开发环境)的使用,并且完成第一个 项目——点亮 Arduino 上的 LED 灯。 要搭建 Arduino 开发平台,首先要从 Arduino 官网下载 Arduino 集成开发包,然后将其 解压放置于 C:\program files\路径下,并右击 arduino.exe 生成桌面快捷方式。Arduino 集成 开发包下载地址:http://arduino.cc/en/Main/Software。 1.2.1 安装驱动 在将 Arduino 控制器第一次接入电脑时,系统会提示自动安装驱动软件,如果电脑联网 则可能成功安装程序,否则需要人工引导安装驱动。此部分针对 Windows 系统,且第一次 将 Arduino 控制板接入的情况。 使用 USB 电线将 Arduino 连接至电脑的 USB 端口,电脑桌面右下角弹出正在安装驱动 程序,一般情况下都不能安装驱动程序,如图 1-11 和 1-12 所示。 图 1-11 正在安装驱动程序 图 1-12 驱动程序安装失败 这时候打开设备管理器,可以看到有一个未成功安装的设备,右击选择更新驱动程序, 目录选择 Arduino IDE 的 drive 目录,如图 1-13 和 1-14 所示。 15 / 95
  • 18.图 1-13 更新驱动程序软件 图 1-14 选择驱动程序目录 系统会弹出 Window 安全窗口,点击“始终安装此驱动程序”,紧接着系统自动安装驱 动程序,如图 1-15 所示。安装完成之后,即可在设备管理器中的端口下看到有 Arduino Uno 设备存在,如图 1-16 和 1-17 所示。 图 1-15 始终安装此驱动程序软件 16 / 95
  • 19.图 1-16 驱动安装成功 图 1-17 Arduino Uno R3 设备 1.2.2 Arduino IDE 的使用 打开 Arduino IDE,会弹出如图所示的启动画面。过几秒之后,跳出 Arduino IDE 的主 操作界面,如图 1-18 所示,并默认新建了一个以日期命名的程序文本,如图 1-19 所示。 图 1-18 Arduino IDE 启动画面 图 1-19 Arduino IDE 主界面 在工具栏上,Arduino IDE 提供了常用功能的快捷键。  校验(Verify):验证程序是否编写无误,如无误则编译该项目。  烧录(Upload):将编写的程序烧录到Arduino 控制器上。  新建(New):新建一个项目。  打开(Open):打开一个项目。  保存(Save):保存当前项目。  串口监视器(Serial Monitor):用它可以查看串口发送接收到的数据。 17 / 95
  • 20.1.2.3 第一个项目——Blink 要想完成第一个项目,首先需要有一块 Arduino 控制板(此部分以 Uno 为例),使用 USB 连接线将 Arduino 控制板连接至电脑的 USB 端口,并成功完成驱动程序,然后打开 Arduino IDE 中的示例程序 Blink。具体路径为【File】→【Examples】→【Basics】→【Blink】, 如图 1-20 所示。 图 1-20 Blink 程序目录 示例 Blink 中的程序如代码清单 1-1 所示,此部分不做程序讲解,留在 1.2.4 小结讲解。 代码清单 1-1:Blink 程序代码 int led = 13; //定义数字口 13 作为 LED 灯的控制信号 // 当 Arduino 重启之后,只执行一次 void setup() { pinMode(led, OUTPUT); // 初始化管脚作为输出 } // 此部分一直循环执行 void loop() { digitalWrite(led, HIGH); // 打开 LED 灯 delay(1000); // 延时 1 秒 digitalWrite(led, LOW); delay(1000); // 关闭 LED 灯 // 延时 1 秒 } 然后在 Arduino IDE 中选择 Arduino 控制板的类型和 Arduino 控制板的串口号,控制板 类型选择为 Arduino Uno,具体路径为【Tools】→【Board】→【Arduino Uno】,笔者的 Arduino Uno 在电脑上生成的串口号为 COM5,所以选为 COM5,如图 1-21 和 1-22 所示。 18 / 95
  • 21.图 1-21 选择控制器类型 图 1-22 选择串口号 最后点击编译按钮,编译完成无错误,如图点击下载按钮,当下载完成之后,我们就可 以看到 Arduino Uno 控制板上的 LED 灯以 1 秒的速度在闪烁。到此,我们的第一项目—— Blink 就实现了,同样可以在其他型号的 Arduino 控制板上实现,只需要选择好相应的控制 器类型即可。 图 1-23 编译无误 图 1-24 下载成功 1.2.4 Arduino 程序框架 由以上的 Blink 示例程序,可以知道 Arduino 程序的基本框架由 setup()和 loop()两部分组 成。 在 Arduino 控制器中程序运行时将首先执行 setup()函数,然后执行 loop()函数,并且不 断循环执行 loop()函数。每次 Arduino 上电或重启后,都会首先执行 setup()函数,而且 setup() 函数只运行一次。setup()函数用于设置引脚的输入/输出类型、配置串口、引入类库文件、 外围器件使用前的初始化等等。loop() 函数在程序运行过程中不断的循环,根据所编写的程 序,完成指定的输入/输出功能。 在代码清单 1-1 中,首先在执行 setup()函数的时候调用 pinMode(led, OUTPUT)将 LED 灯的数字管脚 D13 设置为输出,然后进行 loop()函数中,不断的循环执行 digitalWrite(led, HIGH)、 delay(1000) 、digitalWrite(led,LOW)和 delay(1000),依次实现点亮 LED,延时 1 秒,熄灭 LED,延时 1 秒,周而复始形成周期为两秒的闪烁灯。 19 / 95
  • 22.1.3 数字输入/输出 1.3.1 数字 I/O 的函数库 Arduino 数字 I/O 函数包括 pinMode(pin, mode)、digitalWrite(pin, value)和 digitalWrite(pin, value),分别实现输入/输出设置、数字输出和数字输入的功能。 需要说明的是数字 I/O 函数库的操作对象不仅仅是 Arduino 的数字 I/O,还包括模拟输 入的管脚。例如在 Arduino Uno 控制器中,需要将模拟端口作数字端口使用,可以直接使用 A0~A5,也可用 D14~D19 来指代模拟输入端口 A0~A5。 1. pinMode(pin, mode) 功能:将指定的引脚配置成输出或输入状态 语法:pinMode(pin, mode) 参数:pin:'>pin: