Arduino概述 1
0.1 初识Arduino 2
0.1.1 Arduino简介 2
0.1.2 Arduino功能 2
0.1.3 Arduino硬件组成 2
0.1.4 Arduino大家庭 3
0.2 Arduino的由来 4
0.2.1 Arduino的历史 4
0.2.2 Arduino名称的由来 5
0.3 选择理由 5
0.3.1 Arduino平台特点 5
0.3.2 Arduino开发的优势 7
0.4 本章小结 8
0.5 习题 8
第1篇 基础篇 9
第1章 Arduino硬件 10
1.1 电路基础 10
1.1.1 电压、电流与接地 10
1.1.2 微电脑板的电源适配器 13
1.1.3 电阻 14
1.1.4 电容 15
1.1.5 二极管 16
1.1.6 发光二极管(LED) 16
1.1.7 看懂电路图 18
1.2 Arduino控制器 37
1.2.1 ArduinoUNO 37
1.2.2 ArduinoMega系列 37
1.2.3 ArduinoNano 38
1.2.4 ArduinoDue 38
1.2.5 ArduinoLiLyPad系列 39
1.2.6 ArduinoEthernet 39
1.2.7 Microduino 39
1.3 Arduino外围模块 40
1.3.1 无线模块 40
1.3.2 SD卡读写模块 45
1.3.3 RFID无线识别设备 46
1.4 Arduino UNO入门 48
1.4.1 Arduino UNO的组成 48
1.4.2 Arduino UNO的特点 48
1.4.3 Arduino UNO的供电方式 49
1.4.4 Arduino UNO的输入输出 50
1.4.5 Arduino UNO的下载程序 50
1.4.6 Arduino UNO的通信接口 50
1.5 本章小结 50
1.6 习题 51
第2章 Arduino软件 52
2.1 搭建开发环境 52
2.1.1 Arduino IDE介绍 52
2.1.2 在Windows上安装IDE 53
2.1.3 在Mac OS上安装IDE 57
2.1.4 在Linux上安装IDE 57
2.1.5 安装Arduino驱动 59
2.2 用户界面 62
2.2.1 File(文件)菜单 63
2.2.2 Edit(编辑)菜单和Edit关联菜单 64
2.2.3 Sketch(程序)菜单 64
2.2.4 Tools(工具)菜单 64
2.2.5 Help(帮助)菜单 65
2.3 常用的第三方软件 65
2.3.1 ArduBlock 65
2.3.2 Virtual breadboard 67
2.4 第一次使用Arduino 73
2.4.1 加载第一个程序 74
2.4.2 用Arduino IDE开发程序流程 76
2.4.3 函数库和程序架构介绍 76
2.5 本章小结 77
2.6 习题 78
第3章 Arduino语言及程序结构 79
3.1 Arduino语言 79
3.1.1 描绘程序码的符号 79
3.1.2 注释、常量 80
3.1.3 字元,位元组 83
3.1.4 整数,长整数 84
3.1.5 浮点数,字串 85
3.2 Arduino程序结构 86
3.2.1 void setup() 86
3.2.2 void loop() 87
3.3 本章小结 87
3.4 习题 87
第4章 C/C++语言基础 89
4.1 数据类型 89
4.1.1 基本类型 89
4.1.2 构造类型 90
4.1.3 指针类型 92
4.1.4 空类型 92
4.2 运算符 93
4.2.1 算术运算符 93
4.2.2 比较运算符 93
4.2.3 布尔运算(逻辑运算)符 94
4.2.4 指针运算符 94
4.2.5 位运算符 94
4.2.6 复合运算符 95
4.3 表达式 96
4.3.1 表达式的概念 96
4.3.2 表达式的组成 96
4.4 数组 96
4.4.1 数组的含义 96
4.4.2 数组的分类 97
4.5 字符串 98
4.5.1 字符串操作 99
4.5.2 字符串到数字类型的转换 99
4.5.3 字符检查 100
4.5.4 函数原型 100
4.6 注释 101
4.6.1 注释的原则和目的 101
4.6.2 函数头部应进行注释 101
4.6.3 注释时的注意事项 102
4.7 流程图 105
4.7.1 传统流程图 105
4.7.2 结构流程图 106
4.8 程序结构 107
4.8.1 顺序结构 107
4.8.2 选择结构 107
4.8.3 循环结构 109
4.9 本章小结 111
4.10 习题 111
第2篇 类库篇 112
第5章 Arduino的基本函数 113
5.1 数字I/O 113
5.1.1 pinMode(pin,mode) 113
5.1.2 digitalWrite(pin,value) 113
5.1.3 digitalRead(pin) 114
5.2 模拟I/O 114
5.2.1 analogReference(type) 114
5.2.2 analogRead(pin) 114
5.2.3 analogWrite(pin,value) 115
5.3 高级I/O 116
5.3.1 shiftOut(dataPin,clockPin,bitOrder,val) 116
5.3.2 pulseIn(pin,state,timeout) 117
5.4 时间函数 118
5.4.1 millis() 118
5.4.2 delay(ms) 118
5.4.3 delayMicroseconds(μs) 119
5.5 数学库 119
5.5.1 min(x,y) 119
5.5.2 max(x,y) 120
5.5.3 abs(x) 120
5.5.4 constrain(amt,low,high) 120
5.5.5 map(x,in_min,in_max,out_min,out_max) 120
5.5.6 三角函数 120
5.6 随机数 120
5.6.1 randomSeed(seed) 120
5.6.2 random(howsmall,howbig) 121
5.7 位操作 121
5.8 中断函数 121
5.8.1 interrupts()和noInterrupts() 121
5.8.2 attachInterrupt(interrupt,function,mode) 122
5.9 串口通信 123
5.10 SPI接口 127
5.10.1 SPI接口概述 127
5.10.2 SPI接口数据传输 127
5.10.3 SPI类及其成员函数 127
5.11 本章小结 129
5.12 习题 130
第6章 编写并使用函数 131
6.1 编写并使用函数 131
6.2 本章小结 133
6.3 习题 133
第7章 使用A rduino类库 134
7.1 安装Eclipse和Arduino插件 134
7.2 从一个sketch开始 135
7.3 从pop面向过程到oop面向对象 138
7.4 在ADE中使用类库 145
7.5 在Eclipse中使用类库 147
7.6 本章小结 148
7.7 习题 148
第8章 编写Arduino类库 149
8.1 编写头文件 149
8.2 预处理命令 151
8.3 宏定义 151
8.4 文件包含 152
8.5 条件编译 153
8.6 版本兼容 154
8.7 编写.cpp文件 154
8.8 关键字高亮显示 155
8.9 建立示例程序 156
8.10 本章小结 157
8.11 习题 157
第9章 类库优化与发布 158
9.1 类库优化与发布 158
9.2 本章小结 159
9.3 习题 159
第3篇 I/O篇 160
第10章 I/O口高级应用 161
10.1 调声函数 161
10.2 脉冲宽度测量函数及超声波测距 164
10.2.1 脉冲宽度测量函数 164
10.2.2 超声波测距 165
10.3 简易电子琴 169
10.4 设置ADC参考电压 171
10.5 外部中断 172
10.5.1 外部中断的使用 172
10.5.2 外部中断触发蜂鸣器报警 174
10.6 本章小结 175
10.7 习题 176
第4篇 显示篇 177
第11章 LiquidCrystal类库的使用 178
11.1 1602 LCD与Arduino连接 178
11.2 1602 LCD相关参数 179
11.3 LiquidCrystal类库成员函数 180
11.4 本章小结 184
11.5 习题 184
第12章 u8glib类库的使用 185
12.1 MINI12864显示屏 185
12.2 连接到Arduino并建立u8g对象 186
12.3 u8glib程序结构 187
12.4 纯文本显示 187
12.5 数据显示 189
12.6 本章小结 190
12.7 习题 190
第5篇 通信篇 191
第13章 硬件串口通信 192
13.1 HardwareSerial类库成员函数 192
13.2 print()和write()输出方式的差异 196
13.3 read()和peek()输入方式的差异 197
13.4 串口读取字符串 199
13.5 串口事件 200
13.6 更好的串口监视器—串口调试助手 202
13.7 本章小结 203
13.8 习题 203
第14章 软件模拟串口通信 204
14.1 SoftwareSerial类库的局限性 204
14.2 SoftwareSerial类库成员函数 204
14.3 建立一个软串口通信 205
14.4 实验:Arduino间的串口通信 206
14.5 同时使用多个软串口 209
14.6 本章小结 209
14.7 习题 209
第15章 I2C总线的使用 210
15.1 I2C主机、从机与引脚 210
15.2 Wire类库成员函数 211
15.3 I2C连接方法 214
15.4 主机写数据,从机接收数据 215
15.5 从机发送数据,主机读取数据 217
15.6 本章小结 219
15.7 习题 219
第16章 SPI总线的使用 220
16.1 SPI引脚 220
16.2 SPI总线上的从设备选择 221
16.3 SPI类库成员函数 222
16.4 SPI总线上的数据发送与接收 223
16.5 本章小结 223
16.6 习题 223
第17章 红外遥控 224
17.1 IRremote类库成员函数 224
17.2 红外接收 226
17.3 红外发射 228
17.4 本章小结 229
17.5 习题 229
第18章 USB类库的使用 230
18.1 USB设备模拟相关函数 230
18.1.1 USB鼠标类的成员函数 230
18.1.2 USB键盘类的成员函数 232
18.2 模拟键盘输入信息 234
18.2.1 特殊处理 235
18.2.2 模拟键盘组合按键 235
18.3 PPT播放遥控器 237
18.4 本章小结 239
18.5 习题 239
第19章 Ethernet类库的使用 240
19.1 Ethernet相关硬件介绍 240
19.2 Ethernet类库 244
19.2.1 Ethernet类 244
19.2.2 IPAddress类 245
19.2.3 EthernetServer类 245
19.2.4 EthernetClient类 246
19.3 Ethernet的初始化 249
19.3.1 自定义IP地址 249
19.3.2 DHCP获取IP地址 249
19.4 通过Tel net建立简易聊天室 250
19.4.2 Windows Telnet客户端的使用 252
19.5 Ethernet与Web应用 253
19.5.1 HTTP协议简介 253
19.5.2 HTTP响应 255
19.5.3 网页客户端 255
19.5.4 网页服务器 257
19.6 UDP通信 258
19.6.1 EthernetUDP类 258
19.6.2 使用UDP收/发数据 260
19.7 网页控制Arduino 261
19.8 本章小结 266
19.9 习题 266
第6篇 存储篇 267
第20章 EEPROM类库的使用 268
20.1 EEPROM类库成员函数 268
20.2 写入操作 269
20.3 读取操作 270
20.4 清除操作 271
20.5 存储各类型数据到EEPROM 271
20.6 本章小结 273
20.7 习题 273
第21章 SD卡类库的使用 274
21.1 格式化SD卡 275
21.2 SD卡类库成员函数 275
21.3 使用SD卡读/写模块 279
21.4 创建文件 280
21.5 删除文件 283
21.6 写文件 284
21.7 读文件 286
21.8 本章小结 288
21.9 习题 288
第7篇 实战篇 289
第22章 实战案例 290
22.1 控制三色LED灯闪烁 290
22.2 红外控制LED灯亮灭 295
22.3 控制蜂鸣器报警 299
22.4 控制步进电机转动 300
22.5 制作温湿度显示器 309
22.6 人体热辐射红外报警设备 315
22.7 直滑电位器与灯光互动实验 318
22.8 按键实验 320
22.9 智能环境监控实验 322
22.10 数字抢答 325
22.11 本章小结 329
22.12 习题 329
参考文献 330