第1部分 Arduino的基本知识 2
第1章 Arduino的简介 2
1.1 Atmel AVR 3
1.2 Arduino项目 4
1.3 ATmega 5
1.3.1 ATmega系列 5
1.3.2 ATtiny系列 6
1.3.3 其他系列 6
1.4 不同的Arduino 6
1.4.1 Arduino Uno 7
1.4.2 Arduino Leonardo 7
1.4.3 Arduino Ethernet 8
1.4.4 Arduino Mega 2560 8
1.4.5 Arduino Mini 9
1.4.6 Arduino Micro 9
1.4.7 Arduino Due 9
1.4.8 LilyPad Arduino 10
1.4.9 Arduino Pro 10
1.4.10 Arduino Robot 11
1.4.11 Arduino Esplora 11
1.4.12 Arduino Yún 12
1.4.13 Arduino Tre 12
1.4.14 Arduino Zero 12
1.4.15 你自己的Arduino 13
1.5 扩展板 13
1.5.1 什么是扩展板 13
1.5.2 不同的扩展板 14
1.5.3 Arduino电动机扩展板 14
1.5.4 Arduino无线SD扩展板 14
1.5.5 Arduino以太网扩展板 14
1.5.6 Arduino WiFi扩展板 14
1.5.7 Arduino GSM扩展板 14
1.5.8 你自己的扩展板 15
1.6 你能用Arduino做什么 15
1.7 你需要为本书准备什么 15
1.8 小结 16
第2章 Arduino编程 17
2.1 安装环境 17
2.1.1 下载软件 18
2.1.2 运行软件 19
2.1.3 使用自己的IDE 20
2.2 你的第一个程序 20
2.3 理解你的程序 24
2.4 编程基础 26
2.4.1 变量和数据类型 26
2.4.2 控制结构 27
2.4.3 函数 30
2.4.4 库 31
2.5 小结 31
第3章 电子基础 32
3.1 电子入门 32
3.2 电压、电流和电阻 33
3.2.1 电压 33
3.2.2 电流 34
3.2.3 电阻 34
3.3 基本元器件 35
3.3.1 电阻 35
3.3.2 电容 37
3.3.3 二极管 37
3.3.4 发光二极管 38
3.3.5 晶体管 38
3.4 面包板 39
3.5 输入和输出 40
3.6 连接发光二极管 40
3.6.1 计算 40
3.6.2 软件 41
3.6.3 硬件 41
3.6.4 接下来呢 42
3.7 小结 42
第2部分 标准程序库 44
第4章 Arduino语言 44
4.1 I/O函数 44
4.1.1 数字I/O 44
4.1.2 模拟I/O 45
4.1.3 生成音调 46
4.1.4 读取脉冲 47
4.2 时间函数 47
4.2.1 delay() 48
4.2.2 delayMicroseconds() 48
4.2.3 millis() 48
4.2.4 micros() 48
4.3 数学函数 49
4.3.1 min() 49
4.3.2 max() 49
4.3.3 constrain() 49
4.3.4 abs() 50
4.3.5 map() 50
4.3.6 pow() 50
4.3.7 sqrt() 51
4.3.8 random() 51
4.4 三角函数 51
4.4.1 sin() 52
4.4.2 cos() 52
4.4.3 tan() 52
4.4.4 常量 52
4.5 中断 52
4.5.1 attachInterrupt() 53
4.5.2 detachInterrupt() 53
4.5.3 noInterrupt() 54
4.5.4 interrupts() 54
4.6 小结 54
第5章 串口通信 55
5.1 串口通信的简介 55
5.2 UART通信 56
5.2.1 波特率 57
5.2.2 数据位 58
5.2.3 奇偶校验位 58
5.2.4 停止位 58
5.3 调试和输出 58
5.4 启动一个串行连接 59
5.5 写数据 60
5.5.1 发送文本 60
5.5.2 发送数据 62
5.6 读数据 62
5.6.1 开始通信 62
5.6.2 是否阻塞 63
5.6.3 读取一个字节 63
5.6.4 读取多个字节 63
5.6.5 数据预览 64
5.6.6 解析数据 64
5.6.7 清除 65
5.7 示例编程 65
5.8 软件串口 68
5.9 小结 69
第6章 EEPROM 70
6.1 EEPROM的简介 70
6.2 Arduino上的不同存储器 71
6.3 EEPROM库 72
6.3.1 读取和写入字节 72
6.3.2 读取和写入位 73
6.3.3 读取和写入字符串 75
6.3.4 读取和写入其他值 75
6.3.5 示例程序 76
6.4 准备EEPROM存储 80
6.5 扩展非易失性存储器 80
6.6 小结 81
第7章 SPI 82
7.1 SPI的简介 82
7.2 SPI总线 83
7.2.1 与RS-232比较 83
7.2.2 配置 83
7.2.3 通信 84
7.3 Arduino SPI 84
7.4 SPI库 85
7.5 Arduino Due上的SPI 87
7.6 示例程序 88
7.6.1 硬件 89
7.6.2 程序 90
7.6.3 练习 93
7.7 小结 93
第8章 Wire 94
8.1 Wire的简介 94
8.2 连接I2C 95
8.3 I2C协议 95
8.3.1 地址 95
8.3.2 通信 96
8.4 进行通信 97
8.4.1 主机通信 98
8.4.2 从机通信 99
8.5 陷阱和缺陷 104
8.5.1 不同电压 104
8.5.2 总线速率 105
8.5.3 I2C扩展板 105
8.6 小结 105
第9章 Ethernet 106
9.1 以太网的简介 106
9.2 以太网 107
9.2.1 以太网电缆 107
9.2.2 交换机和集线器 107
9.2.3 以太网供电 108
9.3 TCP/IP 108
9.3.1 MAC地址 108
9.3.2 IP地址 108
9.3.3 DNS 109
9.3.4 端口 109
9.4 Arduino上的以太网 109
9.4.1 导入Ethernet库 110
9.4.2 开始构建以太网 110
9.5 Arduino作为客户端 112
9.5.1 发送和接收数据 113
9.5.2 示例程序 115
9.5.3 Arduino作为服务器 117
9.5.4 示例程序 118
9.6 小结 120
第10章 WiFi 121
10.1 引言 121
10.2 WiFi协议 122
10.2.1 拓扑 122
10.2.2 网络参数 123
10.3 Arduino WiFi 124
10.3.1 导入库 124
10.3.2 初始化 125
10.3.3 状态 125
10.3.4 扫描网络 126
10.3.5 连接和配置 127
10.3.6 无线客户端 128
10.3.7 无线服务器 128
10.4 示例应用 129
10.4.1 硬件 130
10.4.2 程序 130
10.4.3 练习 136
10.5 小结 137
第11章 LiquidCrystal 138
11.1 引言 138
11.2 LiquidCrystal库 140
11.2.1 写入文本 141
11.2.2 光标命令 141
11.2.3 文本方向 142
11.2.4 滚动 142
11.2.5 自定义文本 143
11.3 示例程序 144
11.3.1 硬件 145
11.3.2 软件 145
11.3.3 练习 148
11.4 小结 148
第12章 SD 149
12.1 引言 149
12.2 SD卡 151
12.2.1 容量 152
12.2.2 速率 153
12.3 在Arduino中使用SD卡 153
12.3.1 公认的SD卡 153
12.3.2 限制 154
12.4 SD库 154
12.4.1 导入库 154
12.4.2 连接SD卡 154
12.4.3 打开和关闭文件 155
12.4.4 读取和写入文件 155
12.4.5 文件操作 157
12.4.6 SD卡操作 157
12.4.7 高级用法 158
12.5 示例程序 158
12.6 小结 161
第13章 TFT 162
13.1 引言 162
13.2 技术 163
13.3 TFT库 164
13.3.1 初始化 164
13.3.2 屏幕准备 165
13.3.3 文本操作 165
13.3.4 基本图形 166
13.3.5 上色 167
13.3.6 图形图像 167
13.4 示例程序 168
13.4.1 硬件 168
13.4.2 程序 169
13.4.3 练习 173
13.5 小结 173
第14章 Servo 174
14.1 伺服电动机的简介 174
14.2 控制伺服电动机 175
14.2.1 连接伺服电动机 175
14.2.2 转动伺服电动机 176
14.2.3 断开 177
14.2.4 准确性与安全性 177
14.3 示例程序 177
14.3.1 电路图 179
14.3.2 程序 179
14.3.3 练习 180
14.4 小结 181
第15章 Stepper 182
15.1 电动机的简介 182
15.2 控制步进电动机 183
15.2.1 硬件 183
15.2.2 单极性与双极性步进电动机 183
15.3 Stepper库 184
15.4 示例项目 184
15.4.1 硬件 185
15.4.2 程序 185
15.5 小结 186
第16章 Firmata 187
16.1 Firmata的简介 187
16.2 Firmata库 188
16.2.1 发送消息 188
16.2.2 接收消息 189
16.2.3 回调 189
16.2.4 SysEx 191
16.3 示例程序 192
16.4 小结 194
第17章 GSM 195
17.1 全球移动通信系统(GSM)的简介 195
17.2 移动数据网络 196
17.2.1 GSM 196
17.2.2 3G 197
17.2.3 4G和未来 197
17.2.4 调制解调器 197
17.3 Arduino和GSM 198
17.4 Arduino GSM库 199
17.4.1 GSM类 200
17.4.2 SMS类 201
17.4.3 VoiceCall类 202
17.4.4 GPRS 204
17.4.5 Modem 205
17.5 应用示例 205
17.6 小结 209
第3部分 特殊设备程序库 211
第18章 Audio 211
18.1 音频的简介 211
18.2 数字语音文件 212
18.3 Arduino上的音乐 213
18.4 Arduino Due 213
18.4.1 数-模转换器 214
18.4.2 数字音频到模拟音频 214
18.4.3 创建数字音频 214
18.4.4 存储数字音频 215
18.4.5 播放数字音频 215
18.5 示例程序 216
18.5.1 硬件 217
18.5.2 程序 218
18.5.3 练习 221
18.6 小结 221
第19章 Scheduler 222
19.1 调度器的简介 222
19.2 Arduino多任务 224
19.3 调度 224
19.3.1 多任务合作 225
19.3.2 非合作函数 227
19.4 示例程序 228
19.4.1 硬件 229
19.4.2 程序 231
19.4.3 练习 233
19.5 小结 234
第20章 USBHost 235
20.1 USBHost的简介 235
20.2 USB协议 236
20.3 USB设备 237
20.3.1 键盘 237
20.3.2 鼠标 238
20.3.3 集线器 238
20.4 Arduino Due 238
20.5 USBHost库 239
20.5.1 键盘 240
20.5.2 鼠标 241
20.6 示例程序 242
20.6.1 硬件 243
20.6.2 源代码 243
20.7 小结 245
第21章 Esplora 246
21.1 Esplora的简介 246
21.2 Arduino Esplora库 247
21.2.1 RGB LED 247
21.2.2 传感器 248
21.2.3 按键 249
21.2.4 蜂鸣器 250
21.2.5 TinkerKit 250
21.2.6 LCD模块 251
21.3 示例程序和练习 251
21.4 小结 253
第22章 Robot 254
22.1 Robot库的简介 255
22.2 Arduino机器人 256
22.3 Robot库 257
22.3.1 控制板 257
22.3.2 电动机板 263
22.4 示例程序和练习 264
22.5 小结 266
第23章 Bridge 267
23.1 Bridge库的简介 267
23.2 Bridge 268
23.2.1 Process 269
23.2.2 FileIO 271
23.2.3 YunServer 272
23.2.4 YunClient 273
23.3 示例应用程序 273
23.3.1 硬件 273
23.3.2 程序 273
23.3.3 练习 277
23.4 小结 277
第4部分 用户程序库和扩展板 279
第24章 导入第三方库 279
24.1 库 279
24.1.1 查找库 280
24.1.2 导入一个库 280
24.1.3 使用扩展库 282
24.2 示例应用程序 284
24.3 练习 288
24.4 小结 288
第25章 创建你自己的扩展板 289
25.1 创建一个扩展板 289
25.1.1 想法 289
25.1.2 必备硬件 290
25.1.3 必备软件 290
25.2 你的第一个扩展板 291
25.2.1 第1步:面包板 292
25.2.2 第2步:原理图 294
25.2.3 第3步:PCB 296
25.3 小结 297
第26章 创建你自己的库 298
26.1 库 298
26.1.1 库基础 298
26.1.2 初级库 298
26.1.3 高级库 302
26.1.4 添加注释 305
26.1.5 添加示例 306
26.1.6 须知 306
26.1.7 编码风格 307
26.1.8 发布你的库 308
26.1.9 闭源库 308
26.2 示例库 308
26.2.1 库 308
26.2.2 示例 314
26.2.3 须知 316
26.2.4 收尾 317
26.3 小结 317