第1章 Arduino1.0.4的内核变化 1
1.1 Arduino IDE的变化 1
1.2 程序的变化 2
1.3 API的升级 3
1.3.1 pinMode 3
1.3.2 返回类型 4
1.3.3 uint_8 4
1.4 Arduino API Core 1.0.4 4
1.4.1 Arduino.h 4
1.4.2 串行对象的升级 5
1.4.3 升级后的Stream类 5
1.4.4 Print类 6
1.4.5 新型的可打印类 7
1.4.6 字符串库的升级 7
1.4.7 有线库的升级 8
1.4.8 硬件串口的升级 8
1.5 物理电路板的升级和USB的兼容性 8
1.5.1 Avrdude的升级 8
1.5.2 新的Arduino Leonardo电路板 8
1.5.3 电路板变量 10
1.6 上传器选项重命名为编程器 12
1.7 新的引导加载程序 12
1.8 USB固件程序 13
1.9 总结 13
第2章 Arduino的发展及社交编程 14
2.1 社交编程和项目管理组件 14
2.1.1 项目是什么,它又是如何组织的 15
2.1.2 版本控制简述 16
2.1.3 问题追踪简述 16
2.1.4 文档 17
2.2 社交编程中的项目管理 17
2.2.1 使用Git完成版本控制 18
2.2.2 什么是Git 18
2.2.3 Git安装 18
2.2.4 GitHub工具 19
2.3 版本控制、基本工作流程 20
2.3.1 项目创建 20
2.3.2 代码的修订和检查 21
2.3.3 工作流程 21
2.3.4 工作流程总结:创建项目 23
2.3.5 工作流程总结:项目复刻 24
2.3.6 创建一个“拉拽”请求 26
2.3.7 如何融合拉拽请求 29
2.3.8 什么是议题管理 32
2.3.9 GitHub上的议题管理 33
2.3.10 使用议题管理链接版本控制 33
2.4 归档 34
2.4.1 GitHub wiki 34
2.4.2 创建页面 34
2.4.3 使用Markdown 35
2.5 为Arduino开发做出贡献 38
2.6 如何从源代码构建Arduino IDE 39
2.7 社区资源 40
2.8 总结 41
第3章 openFrameworks和Arduino 42
3.1 准备开始 43
3.2 Arduino代码 43
3.2.1 验证代码 44
3.2.2 Arduino串口函数 44
3.3 openFrameworks设置 45
3.3.1 将openFrameworks连接到Arduino 46
3.3.2 验证代码 47
3.3.3 openFrameworks串口函数 48
3.4 使用Firmata和ofArduino时的编码 49
3.4.1 设置Firmata 49
3.4.2 用openFrameworks控制Arduino 50
3.4.3 验证代码 52
3.4.4 ofArduino用到的关键常量 52
3.4.5 ofArduino类函数的参考 53
3.5 拓展思路 54
3.5.1 改变代码 55
3.5.2 验证代码 56
3.6 更多的工作思路 56
3.7 总结 57
第4章 Android ADK 58
4.1 Android设备 59
4.2 如何检查 59
4.3 连接工作设备 59
4.4 改装 60
4.5 安装Arduino IDE 61
4.5.1 创建Android应用程序 62
4.5.2 Arduino程序 64
4.5.3 Android ADK应用 66
4.6 完成框架 76
4.6.1 完成应用程序 78
4.6.2 Arduino 82
4.6.3 验证代码 83
4.7 SPI和ADK 83
4.8 总结 85
第5章 XBee 87
5.1 购买XBee 87
5.2 简单设置 89
5.3 透明模式 90
5.3.1 模块配置 90
5.3.2 Arduino设置 91
5.3.3 验证代码 91
5.4 API模式 91
5.4.1 模块配置 92
5.4.2 API包结构 93
5.4.3 发送命令 94
5.4.4 数据发送 94
5.5 请求包 95
5.6 应答包 96
5.7 Arduino数据呼应 98
5.8 端点固件 102
5.9 总结 104
第6章 传感器的模拟 105
6.1 模拟量传感器 105
6.1.1 模拟传感器读写器 106
6.1.2 RC低通滤波器 106
6.1.3 验证代码 107
6.1.4 电阻梯 108
6.1.5 验证代码 110
6.2 数字传感器 110
6.2.1 PWM 111
6.2.2 格雷码 111
6.3 串行传感器 114
6.3.1 输出串行数据 115
6.3.2 验证代码 116
6.4 12C 117
6.4.1 TWCR寄存器 117
6.4.2 TWAR寄存器 118
6.4.3 TWDR寄存器 118
6.4.4 TWSR寄存器 118
6.4.5 I2C数据输出 119
6.4.6 验证代码 120
6.5 总结 120
第7章 PID控制器 121
7.1 数学部分 121
7.1.1 比例语句 121
7.1.2 积分语句 122
7.1.3 微分语句 122
7.1.4 小结 123
7.1.5 时间 123
7.2 PID控制器设置 124
7.2.1 硬件布线 124
7.2.2 验证代码 125
7.3 PID调谐器 126
7.4 对比PID、死区和ON/OFF控制器 127
7.5 PID的控制功能 128
7.5.1 调谐 129
7.5.2 PID库 130
7.5.3 PID库函数 130
7.6 其他资源 132
7.7 总结 132
第8章 Android传感器网络 133
8.1 设置传感器网络 134
8.2 openFrameworks 136
8.3 Arduino 142
8.4 Android应用程序 150
8.5 总结 158
第9章 PIC32和Atmel ATtiny芯片与Arduino联合使用 159
9.1 Arduino和非标准环境 159
9.2 MPI DE和chipKIT PIC32 160
9.3 Arduino对ATtiny家族的支持 167
9.3.1 ATtiny 85/45/25 169
9.3.2 ATtiny 84/44/24 169
9.3.3 ATtiny 4313和2313 169
9.4 将Arduino作为一个ISP编程器使用 170
9.5 工程:用敲击密码打开盒子 171
9.5.1 设备在做什么 171
9.5.2 材料清单 172
9.6 总结 175
第10章 多道处理:使Arduino更强大 176
10.1 12C总线 177
10.2 串行外围接口 178
10.3 连接两个设备 179
10.3.1 安装一个主SPI设备 180
10.3.2 验证代码 181
10.3.3 中断向量 182
10.3.4 SPI寄存器 182
10.3.5 确认代码 185
10.3.6 多从机 186
10.3.7 主机寄存器 186
10.3.8 再次验证代码 187
10.4 对称型架构双极性总线 187
10.4.1 通过代码实现SABB 189
10.4.2 验证代码 191
10.4.3 连接SABB到SPI 191
10.5 转换为Mega 192
10.6 物理上的最佳实践 193
10.7 总结 193
第11章 Arduino下的游戏开发 194
11.1 适合Arduino的游戏 194
11.2 一个简单的游戏 196
11.2.1 概念验证 196
11.2.2 游戏Stop It的代码 197
11.2.3 验证游戏代码 202
11.2.4 小花招 203
11.3 增添一些更好的显示和图像 203
11.3.1 Gameduino库 204
11.3.2 一个Stack It游戏 206
11.3.3 游戏的美术设计 207
11.3.4 游戏Stack It的代码 208
11.3.5 验证游戏代码 214
11.3.6 发出声音 214
11.3.7 增加一些启动换面 216
11.3.8 游戏自动运行的编程 217
11.3.9 最后的修饰 219
11.3.10 游乐场和游戏资源 220
11.4 总结 221
第12章 自定义Arduino库 222
12.1 创建自定义库需要了解的东西 222
12.2 创建电动机库 228
12.3 Arduino库文件夹的分析 233
12.3.1 示例文件夹 234
12.3.2 许可证 234
12.3.3 keywords.txt 234
12.3.4 安装Arduino库 235
12.3.5 使用Arduino库 235
12.4 Arduino对象和库条例 235
12.5 总结 242
第13章 Arduino测试套件 243
13.1 安装Arduino测试套件 243
13.2 开始测试 246
13.3 Arduino测试结果的格式 247
13.4 Arduino测试套件基本的函数 249
13.4.1 ATS_begin 249
13.4.2 ATS_PrintTestStatus 249
13.4.3 ATS_end 250
13.4.4 使用基本的函数 250
13.5 Arduino测试套件内置测试 251
13.6 测试自己的Arduino派生板的策略 252
13.7 内存测试 252
13.8 测试库 256
13.8.1 SPI.transfer()测试 262
13.8.2 setBitOrder()测试 263
13.8.3 setClockDivider()测试 263
13.8.4 setDataMode()测试 264
13.8.5 SPI测试结果 264
13.9 总结 265