1、第1章 Arduino概述,1.1 Arduino的起源 1.2 术语Arduino的含义 1.3 Arduino的硬件产品主板 1.4 Arduino的硬件产品盾板 1.5 Arduino硬件产品新手套件 1.6 Arduino硬件产品附件 1.7 Arduino UNO 1.8 Arduino可以做什么,1.1 Arduino的起源,Arduino开始于2005年伊夫雷亚交互设计院(Interaction Design Institute Ivrea)的一个学生项目。 现在,Arduino是一个开源项目,它的所有设计资料都可以在它的官网免费得到。Arduino官方开发板在30美元左右,而相
2、关的“克隆”版本已经低至9美元。,1.2.1 Arduino的硬件 1.2.2 Arduino的软件 1.2.3 Arduino的社区,1.2.1 Arduino的硬件,Arduino的硬件开发板有许多种型号。它是一个单片机集成电路,它的核心就是一个单片机,开发板上的其他电路用来供电和转换信号。官方Arduino使用的是megaAVR系列的芯片,特别是ATmega8、ATmega168、ATmega328、ATmega1280以及ATmega2560,还有一小部分使用的是Arduino兼容的处理器。,1.2.2 Arduino的软件,Arduino IDE是专门为Arduino开发板量身定做的
3、集成开发环境。,1.2.3 Arduino的社区,Arduino为用户提供了Arduino社区。它的网址是http:/forum.arduino.cc/。,1.3 Arduino的硬件产品主板,1.3.1 Arduino UNO 1.3.2 Arduino Leonardo 1.3.3 Arduino Due 1.3.4 Arduino Yn 1.3.5 Arduino Tre 1.3.6 Arduino Micro 1.3.7 Arduino Robot 1.3.8 Arduino Esplora,1.3 Arduino的硬件产品主板,1.3.9 Arduino Mega系列 1.3.10
4、Arduino Ethernet 1.3.11 Arduino Mini 1.3.12 LiLyPad Arduino系列 1.3.13 Arduino Nano 1.3.14 Arduino Pro系列 1.3.15 Arduino Fio 1.3.16 Arduino Zero,1.3.1 Arduino UNO,Arduino Uno开发板基于ATmega328。,1.3.2 Arduino Leonardo,Arduino Leonardo是基于ATmega32U4的微控制器。,1.3.3 Arduino Due,Arduino Due是一个基于Atmel SAM3X8E ARM Co
5、rtex-M3 CPU的微控制器。它是第一个基于32位ARM核心微控制器的Arduino板。,1.3.4 Arduino Yn,Arduino Yn是一个基于ATmega32U4和Atheros AR9331的微控制器版。,1.3.5 Arduino Tre,Arduino Tre是第一个在美国制造的Arduino板。它使用的是1GHz的Sitara AM335x处理器。,1.3.6 Arduino Micro,Arduino Micro是一个基于ATmega32U4的微控制器板,它是与Adafruit联合开发的。,1.3.7 Arduino Robot,Arduino Robot是官方推出的
6、第一个原型板子。,1.3.8 Arduino Esplora,Arduino Esplora是源自Arduino Leonardo的微控制器板。,1.3.9 Arduino Mega系列,1.Arduino Mega 2.Arduino Mega 2560 3.Arduino Mega ADK,1.Arduino Mega,Arduino Mega是基于ATmega1280的微控制器板。,2.Arduino Mega 2560,Arduino Mega 2560是为替代Arduino Mega而设计的。,3.Arduino Mega ADK,Arduion Mega ADK在Mega 2560
7、的基础上增加了一个USB接口。,1.3.10 Arduino Ethernet,Arduino Ethernet是基于ATmega328的微控制器板。,1.3.11 Arduino Mini,Arduino Min最初是基于ATmega168的微控制器板,现在已经改用ATmega328。,1.3.12 LiLyPad Arduino系列,1.LiLyPad Arduino 2.LilyPad Arduino Simple 3.LilyPad Arduino SimpleSnap 4.LilyPad Arduino USB,1.LiLyPad Arduino,LiLyPad Arduino是为可
8、穿戴和电子织物而设计的。,2.LilyPad Arduino Simple,LilyPad Arduino Simple相对LiLyPad Arduino来说只有9个数字输入输出针脚(其中5个拥有PWM输出能力。,3.LilyPad Arduino SimpleSnap,LilyPad Arduino SimpleSnap大部分与LilyPad Arduino Simple类似。,4.LilyPad Arduino USB,LilyPad Arduino USB是基于ATmega32u4的微控制器板。,1.3.13 Arduino Nano,Arduino Nano是一个小巧、完整、面包板友好
9、的基于ATmega328(第3版)或ATmega168(第2版)的微控制器板。,1.3.14 Arduino Pro系列,1.Arduino Pro 2.Arduino Pro Mini,1.Arduino Pro,Arduino Pro是基于ATmega168或ATmega328的微控制器板。,2.Arduino Pro Mini,它是Arduino Pro的迷你版本。,1.3.15 Arduino Fio,Arduino Fio是基于Atmega328P的微控制器板,运行在3.3V/8MHz下。,1.3.16 Arduino Zero,Arduino Zero是由Arduino UNO衍生
10、而来的32位扩展版本。,1.4 Arduino的硬件产品盾板,1.4.1 Arduino GSM盾板 1.4.2 Arduino Ethernet盾板 1.4.3 Arduino WiFi盾板 1.4.4 Arduino Wireless SD盾板 1.4.5 Arduino Motor盾板 1.4.6 Arduino Wireless Proto盾板 1.4.7 Arduino Proto盾板,1.4.1 Arduino GSM盾板,Arduino GSM盾板可以使你的Arduino使用GPRS无线网络连接到因特网。,1.4.2 Arduino Ethernet盾板,通过Arduino Et
11、hernet盾板可以连接到因特网。,1.4.3 Arduino WiFi盾板,Arduino WiFi可以让Arduino板通过WiFi连接到因特网。,1.4.4 Arduino Wireless SD盾板,Arduino Wireless SD盾板允许Arduino板使用无线模块进行无线通讯,它基于的是Xbee模块。,1.4.5 Arduino Motor盾板,Arduino Motor盾板基于L298,它是设计用来驱动像继电器、螺线管、直流电机和步进电机这样的感性负载。,1.4.6 Arduino Wireless Proto盾板,Arduino Wireless Proto盾板与Ardu
12、ino Wireless SD盾板非常类似。,1.4.7 Arduino Proto盾板,Arduino Proto盾板就是一块完全的原型板。,1.5 Arduino硬件产品新手套件,新手套件是为欠缺经验的Arduino爱好者准备的,它将通过让你亲手实践的方式来学会Arduino板的基本使用。,1.6 Arduino硬件产品附件,1.6.1 TFT LCD屏幕 1.6.2 微型USB/Serial适配器,1.6.1 TFT LCD屏幕,LCD屏幕在Arduino做的项目中一直占有很大的比重,因此,官方提供了这个附件。在这个LCD屏幕上,你可以使用官方提供的TFT库来绘制文字、图片以及图像。,1
13、.6.2 微型USB/Serial适配器,Arduino官方提供了USB/Serial适配器来简少为这类Arduino板编程的麻烦。,1.7 Arduino UNO,1.7.1 Arduino UNO上的主要元器件 1.7.2 Arduino UNO上的端口,1.7.1 Arduino UNO上的主要元器件,1.7.2 Arduino UNO上的端口,Arduino UNO共有两排两排端口,按功能主要分为数字I/O、模拟I/O口和电源接口。,1.数字I/O口,数字I/O口可以输入和输出数字信号。数字信号只有两种形态,高电平和低电平。,2.模拟I/O口,模拟I/O口可以输入模拟信号和数字信号,但
14、是不能输出模拟信号。它可以测量连接在它上面的电压以供程序使用。,3.电源接口,电源端口部分有多个不同名字的接口: IOREF RESET 3.3V和5V 两个GND Vin,1.8 Arduino可以做什么,前面的内容事无巨细地介绍了Arduino的方方面面,就差告诉读者它到底能做什么了。概括地来说,它可以通过传感器和致动器来让你控制物理世界。,第2章 电路设计软件Fritzing,2.1 Fritzing基础 2.2 Fritzing的元件库 2.3 编辑元件 2.4 画出手电筒的电路图,2.1 Fritzing基础,2.1.1 Fritzing的下载与安装 2.1.2 认识Fritzing
15、的主面板,2.1.1 Fritzing的下载与安装,1.下载对应的Fritzing Fritzing的官方网址是http:/fritzing.org,下载页面地址是http:/fritzing.org/download/。 2.安装Fritzing,2.1.2 认识Fritzing的主面板,1.菜单栏 2.主工作区 3.元件栏 4.指示栏 5.快捷操作栏 6.提示信息栏,2.2 Fritzing的元件库,2.2.1 元件的组织形式 2.2.2 导入元件库 2.2.3 导出元件库,2.2.1 元件的组织形式,Fritzing并不是将所有的元件都无规律地放在一起的,而是以各种规则组织为不同的库。F
16、ritzing最主要的是CORE库和MINE库。Fritzing中的库可以通过元件栏中的标签选择。,2.2.2 导入元件库,得益于开源和开放的优势,Fritzing的元件增加和更新的速度还是比迅速的。而Fritzing每个版本又不可能包含所有的元件,并且包含太多元器件也会造成软件相应缓慢。那么,在后期势必需要有方法来更新或者添加元件,Fritzing提供了导入功能来实现。 1.下载元件库 https:/ https:/ 2.导入元件库,2.2.3 导出元件库,导出元件库是与导入元件库对应的。你在互联网下载到的库文件是别人导出的元件库,而你自己制作的库(制作方法见2.3)也可以导出后分析给他人,
17、如图2.19所示为一些自制的元件。,2.3 编辑元件,2.3.1 Fritzing的元件编辑器 2.3.2 制作元件的面包板视图 2.3.3 制作元件的原理图视图 2.3.4 制作元件的PCB视图 2.3.5 元件编辑器的图标和元数据视图 2.3.6 关联所有视图的针脚,2.3.1 Fritzing的元件编辑器,在当前版本中(0.8.7),Fritzing规定了不可以从头开始制作一个元件,所以要打开元件编辑器需要以一个元件为基础。下面以按钮为基础来总体介绍一下Fritzing的元件编辑器。,2.3.2 制作元件的面包板视图,“面板板”视图可能是Fritzing用户使用的最多的一个视图。 1.选
18、择一个类似的元件 2.编辑SVG文件 3.导入SVG文件,2.3.3 制作元件的原理图视图,2.3.4 制作元件的PCB视图,推荐的做法是使用Fritzing中设计的的PCB然后使用SVG编辑器进行微调,因为这样可以避免去查阅PCB相关的规范。,2.3.5 元件编辑器的图标和元数据视图,元件编辑器的图标视图和元数据视图并不需要其他的辅助工具,而且他们也非常容易理解和实现。,1.图标视图,图标视图用来编辑元件在元件选择器中显示的图标,通常情况下它是与面包板视图相同的,而且在元件编辑器中也提供了对应的选项。,2.元数据视图,元数据视图用来编辑元件的元数据如标题、日期、作者等信息。,2.3.6 关联
19、所有视图的针脚,做好面包板、原理图和PCB视图只是完成了整个制作过程的一部分,现在的元件还不能正常使用,因为Fritzing并不知道你的元件哪里可以进行连接,即使针脚就明显地摆在那里。这就需要各种视图与Fritzing之间做一些关联。,2.4 画出手电筒的电路图,1.选择元件 2.连接电路,第3章 Arduino IDE安装与使用,3.1 Arduino IDE安装 3.2 Windows7下的Arduino驱动安装 3.3 在Arduino上运行程序 3.4 Arduino IDE编码流程 3.5 高级的Arduino IDEMariaMole,3.1 Arduino IDE安装,3.1.1
20、 Arduino IDE安装包下载 3.1.2 使用二进制安装包安装Arduino IDE 3.1.3 使用压缩包形式安装Arduino IDE 3.1.4 Arduino IDE中文化,3.1.1 Arduino IDE安装包下载,Arduino IDE的安装包可以从Arduino官网很方便地下载,其下载链接为:http:/arduino.cc/en/Main/Software。,3.1.2 使用二进制安装包安装Arduino IDE,Arduino IDE的二进制安装包应该是以“.exe”为后缀的文件。,3.1.3 使用压缩包形式安装Arduino IDE,Arduino IDE的安装的压
21、缩包应该是以“.zip”为后缀的文件。,3.1.4 Arduino IDE中文化,默认的Arduino IDE语言是英语。如果读者想要使用简体中文或者其他语言,可以在Arduino IDE的“File”菜单项目中的“Preferences”中修改。,3.2 Windows7下的Arduino驱动安装,3.2.1 自动安装Arduino驱动 3.2.2 手动安装Arduino驱动,3.2.1 自动安装Arduino驱动,在Windows 7操作系统下可以在设备管理器中右键单击对应的设备来为其安装驱动。,3.2.2 手动安装Arduino驱动,手动安装需要准备Arduino的驱动。在Arduino
22、 IDE的安装包中就提供了驱动文件,相关文件就放在drivers目录下。,3.3 在Arduino上运行程序,3.3.1 Arduino IDE主界面简介 3.3.2 运行一个闪烁LED示例程序 3.3.3 运行一个控制台输出示例程序,3.3.1 Arduino IDE主界面简介,3.3.2 运行一个闪烁LED示例程序,这个示例程序可以通过依次选择“文件”-“示例”-“01.Basics”-“Blink”命令打开。,3.3.3 运行一个控制台输出示例程序,在有些情况下Arduino版子要与主机做一些交互。例如,输出调试信息等。这些信息可以通过串口来传输到主机,在主机中通过串口软件就可以读取到A
23、rduino开发板发出的信息。Arduino IDE提供了一个简易的串口监视器。,3.4 Arduino IDE编码流程,3.4.1 创建、保存和打开源文件 3.4.2 编辑源文件 3.4.3 校验源文件 3.4.4 下载程序到开发板,3.4.1 创建、保存和打开源文件,新建源文件可以通过菜单栏中的“文件”-“新建”命令、快捷按钮或快捷键Ctrl+N完成。 存储文件可以通过菜单栏中的“文件”-“保存”、快捷按钮或快捷键Ctrl+S保存,Arduino IDE程序会将文件默认保存为以“.ino”为后缀的文件。 如果需要修改以前编写的源代码,可以通过菜单栏中的“文件”-“打开”命令、快捷按钮或快捷
24、键Ctrl+O完成。,3.4.2 编辑源文件,在Arduino IDE中做的大部分工作就是编辑源文件。编辑源文件时只需要将期望的代码写入编辑区域即可。,3.4.3 校验源文件,校验源文件就是通过编译源代码来检查代码中是否有错误。校验可以通过菜单栏中的“程序”-“校验/编译”命令、快捷按钮或快捷键Ctrl+R完成。,3.4.4 下载程序到开发板,下载的作用就是将编译好的二进制程序文件传输到Arduino开发板中。可以通过菜单栏中的“文件”-“下载”命令、快捷按钮和快捷键Ctrl+U完成。,3.5 高级的Arduino IDEMariaMole,MariaMole可以从其官网免费下载到,其网址为:
25、http:/。,第4章 Arduino编程语言基础,4.1 Arduino程序必要的setup()和loop() 4.2 程序中的值 4.3 运算符 4.4 语法进阶 4.5 控制结构 4.6 函数 4.7 C+语言的类和对象 4.8 库,4.1 Arduino程序必要的setup()和loop(),如下是一段可以正确被下载到Arduino开发板并运行的程序: void setup() void loop() setup()函数中的代码只会被运行一次,通常用来做一些初始化工作; loop()中的代码会被无限次地重复运行,程序的主体部分会写在这里。,4.2 程序中的值,4.2.1 变量和常量 4
26、.2.2 变量类型 4.2.3 变量的作用域和修饰符 4.2.4 获取变量大小的工具sizeof() 4.2.5 变量类型转换,4.2.1 变量和常量,常量非常容易理解,它是一个字面量,它只可以表示一个特定的量。,4.2.2 变量类型,4.2.3 变量的作用域和修饰符,变量的作用域是用来限制其可以被使用的范围,而变量的修饰符用来改变变量的一些特性。 1.变量的作用域 2.变量的修饰符,1.变量的作用域,作用域即作用范围,Arduino语言中的变量是有确定的作用范围的。变量的作用域是被限制在语句块中的。在变量作用域之外的位置无法访问到该变量。,2.变量的修饰符,在Arduino语言中,有stat
27、ic、volatile和const三个变量修饰符。static和const的作用是修改变量的存储位置以适应不同的需求:,4.2.4 获取变量大小的工具sizeof(),通过sizeof()来获取指定变量的大小。,4.2.5 变量类型转换,Arduino语言提供了一些函数可以将指定的值转换为特定的类型。,4.3 运算符,4.3.1 数学运算符 4.3.2 比较运算符 4.3.3 布尔运算符 4.3.4 指针运算符 4.3.5 位运算符 4.3.6 复合运算符,4.3.1 数学运算符,数学运算符包括四则运算符以及取模运算符。,4.3.2 比较运算符,比较运算符的结果是boolean类型的true或
28、false。,4.3.3 布尔运算符,布尔运算符用来对两个布尔表达式进行运算,运算的结果仍然为布尔值。,4.3.4 指针运算符,指针运算符包括&(引用)和*(间接引用)。&运算符用来引用变量或者函数的地址,*则是通过地址间接地引用指定地址中的内容。,4.3.5 位运算符,位运算符用来按位操作数据。,4.3.6 复合运算符,复合操作运算符是部分数学运算符、位运算符与赋值运算的一种简写形式。,4.4 语法进阶,4.4.1 预定义命令#define和#include 4.4.2 语句和语句块 4.4.3 注释,4.4.1 预定义命令#define和#include,预处理的语句是在编译器的预处理步骤
29、进行处理。预处理命令#define用来定义一个常量,它的语法形式如下: #define constantName value,4.4.2 语句和语句块,1.语句 2.语句块,1.语句,Arduino将分号(;)视为一条语句的结束符号:,2.语句块,两个花括号之间的语句称为语句块,它有两个作用:将多条语句作为一个整体和形成一个作用域。同时,语句块又是一个独立的作用域,因此其中定义的变量a无法在语句块之外使用。,4.4.3 注释,注释用来对代码所实现的功能做一些描述,当然也可以用来做一些相关说明。Arduino语言提供了两种注释方法。“/*/”为多行注释,在“/*”和“*/”之间的内容就是注释内容
30、:,4.5 控制结构,4.5.1 条件判断语句if和ifelse 4.5.2 跳转语句break、continue、return和goto 4.5.3 分支语句switch case 4.5.4 循环语句while和dowhile 4.5.5 循环语句for,4.5.1 条件判断语句if和ifelse,if和ifelse可以根据不同的条件来执行不同的语句。 if(条件) 语句1 后续语句if(条件) 语句1 else 语句2 后续语句,4.5.2 跳转语句break、continue、return和goto,break用于跳出switch、while、dowhile和for结构; contin
31、ue用于在while、dowhile和for循环结构中结束当前循环; return用于立即结束当前程序执行; goto用于将程序执行流程跳转到指定位置后继续执行。,4.5.3 分支语句switch case,switchcase结构可以根据变量不同的值而执行不同的语句: switch(var) case value1: 语句1 break; case value2: 语句2 break; case value3: 语句3 break; . default: 语句 break; 后续语句,4.5.4 循环语句while和dowhile,通过while结构就可以使计算机重复地执行一些语句,直到所要
32、求的条件不满足为止,其语法结构如下: while(条件) 语句 后续语句 dowhile结构与while结构的执行过程类似,但dowhile结构会保证其中的“语句”会执行一次: do 语句 while(条件) 后续语句,4.5.5 循环语句for,for结构用来在满足指定条件的情况下循环执行语句,其语法结构如下: for(语句1;语句2;语句3) 语句 后续语句,4.6 函数,4.6.1 系统函数 4.6.2 调用函数 4.6.3 自定义函数,4.6.1 系统函数,系统函数是Arduino语言默认提供的函数,这些函数可以直接拿来使用而不需要定义。,4.6.2 调用函数,调用函数就是要使用函数的
33、功能,可以使用如下语法进行调用: funcname(arg1,arg2),4.6.3 自定义函数,定义函数的语法如下: typeSpecifier functionName(argList) 语句 ,4.7 C+语言的类和对象,4.7.1 类 4.7.2 对象,4.7.1 类,类是C+语言中的一种类型,即类类型。它也常被称为抽象数据类型。抽象数据类型将数据(即常听说的成员变量)和作用于数据的操作(即常听说的成员函数)视为一个单元。,4.7.2 对象,对象是类的一个实例,对象可以以如下的任意一种方式定义: 将类的名字直接用作类型名; 使用关键字class或struct。 Stepper step
34、per1; class Stepper stepper1;,4.8 库,4.8.1 Arduino官方库 4.8.2 使用第三方库和创建自己的库,4.8.1 Arduino官方库,官方提供的库可以直接从Arduino IDE中导入。,4.8.2 使用第三方库和创建自己的库,除了可以直接使用Arduino提供的标准库之外,还可以使用第三方库。第三方库可以通过菜单中的“程序”-“导入库”-“Add Library”。,第5章 通用元器件介绍,5.1 导线、电缆和连接器 5.2 电阻 5.3 面包板,5.1 导线、电缆和连接器,导线的作用是为电流提供通路。电缆是由多根独立导线组成的。,5.2 电阻,
35、5.2.1 概念 5.2.2 阻值识别 5.2.3 欧姆定律 5.2.4 电阻的作用 5.2.5 电阻的串联与并联,5.2.1 概念,固定电阻就是有一个固定值的电阻,它的阻值在相同的环境下是固定的(当然会有一定的误差范围)。,5.2.2 阻值识别,电阻的大小通常有两种表示方式:数字标记和色环标记。,5.2.3 欧姆定律,欧姆定律描述了电路中电阻值和电压、电流之间的关系:在同一电路中,导体中的电流跟导体两端的电压成正比,跟导体的电阻阻值成反比,基本公式是: I=V/R,5.2.4 电阻的作用,电阻在电路中的作用就是分压和限流。因为电气元件对电压和电流都有一定的承受范围,超过指定的范围就有可能导致元件损坏。因此,电阻在电路中的作用是非常重要的。,5.2.5 电阻的串联与并联,两个电阻首尾相连起来就构成了一个大的电阻,这种形式就被称为电阻的串联。串联后电阻的值可以使用下面的公式计算: Rtotal=R1+R2+R3+R4+RN 与串联电阻对应的是并联电阻,并联电阻的等效电阻可以使用如下的公式计算: Rtotal=1/(1/R1+1/R2+1/R3+1/R4+1/RN),5.3 面包板,面包板的主要作用是用于构造电子样品。由于面包板无需焊接就可以轻松实现元器件之间的电气连接,因此非常适合于我们学习测试之用。,