目 录
第 1章 起步 1
1.1 可能性是无限的 2
1.2 数字的力量 5
1.3 元件和附件 6
1.4 所需的软件 7
1.4.1 Mac OS X 7
1.4.2 Windows XP及后续版本 11
1.4.3 Ubuntu Linux 9.04及后续版本 14
1.5 安全 17
1.6 展望 17
第 2章 探索Arduino板和IDE 18
2.1 Arduino板 18
2.2 看一下Arduino IDE 23
2.2.1 命令区 23
2.2.2 文字区 24
2.2.3 消息窗口区 25
2.3 在IDE里创建第 一个程序 25
2.3.1 注释 25
2.3.2 setup函数 26
2.3.3 控制硬件 26
2.3.4 loop函数 27
2.3.5 检查程序 28
2.3.6 上传和运行程序 29
2.3.7 修改程序 29
2.4 展望 30
第3章 第 一步 31
3.1 规划作品 32
3.2 关于电 32
3.2.1 电流 33
3.2.2 电压 33
3.2.3 功率 33
3.3 电子元件 33
3.3.1 电阻 33
3.3.2 发光二极管 36
3.3.3 面包板 38
3.4 作品1:做出闪烁的LED波 39
3.4.1 算法 40
3.4.2 元件 40
3.4.3 程序 40
3.4.4 电路 41
3.4.5 运行程序 42
3.5 使用变量 42
3.6 作品2:用for循环做重复动作 43
3.7 用脉冲宽度调制变化LED的亮度 44
3.8 作品3:演示PWM 45
3.9 更多的电子元件 46
3.9.1 晶体管 46
3.9.2 整流二极管 47
3.9.3 继电器 47
3.10 高压电路 48
3.11 展望 49
第4章 构建模块 50
4.1 使用电路图 51
4.1.1 识别元件 51
4.1.2 电路图中的线 54
4.1.3 剖析电路图 55
4.2 电容 56
4.2.1 测量电容的容量 56
4.2.2 读电容值 56
4.2.3 电容的分类 57
4.2.4 数字输入 58
4.3 作品4:演示数字输入 59
4.3.1 算法 59
4.3.2 元件 60
4.3.3 电路图 60
4.3.4 程序 64
4.3.5 修改程序 65
4.3.6 理解程序 65
4.3.7 用#define定义常数 65
4.3.8 读数字输入引脚 65
4.3.9 用if做决策 65
4.3.10 用if-then-else做更多的决策 66
4.4 布尔变量 67
4.4.1 逻辑运算符 67
4.4.2 做两个或更多的比较 68
4.5 作品5:控制交通 68
4.5.1 目标 69
4.5.2 算法 69
4.5.3 元件 69
4.5.4 电路图 70
4.5.5 程序 71
4.5.6 运行程序 73
4.6 模拟与数字信号的对比 73
4.7 作品6:做一个单节电池测试仪 75
4.7.1 目标 75
4.7.2 算法 75
4.7.3 元件 76
4.7.4 电路图 76
4.7.5 程序 77
4.8 用Arduino做算术 78
4.8.1 浮点变量 78
4.8.2 数值的比较运算符 79
4.9 用参考电压改进模拟测量精度 79
4.9.1 用外部参考电压 79
4.9.2 使用内部参考电压 80
4.10 可变电阻 81
4.11 压电蜂鸣器 82
4.12 作品7:试试压电蜂鸣器 83
4.13 作品8:做一个易读的温度计 84
4.13.1 目标 85
4.13.2 元件 85
4.13.3 电路图 85
4.13.4 程序 86
4.13.5 程序创新 87
4.14 展望 88
第5章 使用函数 89
5.1 作品9:创建一个函数来反复执行 90
5.2 作品10:创建一个能设置闪烁次数的函数 91
5.3 创建一个返回值的函数 92
5.4 作品11:做一个闪烁表示温度的快读温度计 92
5.4.1 元件 93
5.4.2 电路图 93
5.4.3 程序 93
5.5 在串口监视器中显示Arduino传来的数据 95
5.6 作品12:在串口监视器显示温度 97
5.7 用while语句做循环 98
5.8 从串口监视器发送数据到Arduino 99
5.9 作品13:把一个数乘以2 99
5.10 long变量 101
5.11 作品14:使用long变量 101
5.12 展望 102
第6章 数字、变量和算术 103
6.1 产生随机数 104
6.2 作品15:做一个电子骰子 105
6.2.1 元件 106
6.2.2 电路图 106
6.2.3 程序 107
6.2.4 修改程序 108
6.3 二进制快速入门 108
6.4 用移位寄存器扩展数字输出 110
6.5 作品16:做一个LED二进制显示器 111
6.5.1 元件 111
6.5.2 连接74HC595 111
6.5.3 程序 112
6.6 作品17:做一个二进制测验游戏 113
6.6.1 算法 114
6.6.2 程序 114
6.7 数组 116
6.7.1 定义数组 116
6.7.2 访问数组单元 117
6.7.3 读写数组 117
6.8 7段数码管 118
6.9 作品18:做单个数字的显示 120
6.9.1 元件 120
6.9.2 电路 120
6.9.3 程序 121
6.9.4 显示两位数字 122
6.10 作品19:控制两个7段数码管 122
6.10.1 元件 123
6.10.2 电路图 123
6.10.3 取模 124
6.11 作品20:做一个数字温度计 125
6.11.1 硬件 125
6.11.2 程序 125
6.12 LED矩阵显示模块 126
6.12.1 LED矩阵电路图 127
6.12.2 连线 128
6.13 位运算 130
6.13.1 按位与运算 130
6.13.2 按位或运算 130
6.13.3 按位异或运算 131
6.13.4 按位取反(非)运算 131
6.13.5 按位左移和右移 131
6.14 作品21:做一个LED矩阵 132
6.15 作品22:在LED矩阵上创建图像 133
6.16 作品23:在LED矩阵上显示图像 135
6.17 作品24:在LED矩阵上显示动画 136
6.18 展望 137
第7章 液晶显示器 138
7.1 字符LCD模块 139
7.1.1 在程序中使用字符LCD 140
7.1.2 显示文字 141
7.1.3 显示数字变量的值 141
7.2 作品25:定义定制字符 142
7.3 图形LCD模块 144
7.3.1 连接图形LCD 145
7.3.2 使用LCD 145
7.3.3 控制显示器 146
7.4 作品26:文本显示的效果 146
7.4.1 作出更复杂的显示效果 147
7.5 作品27:做一个温度历史监视器 148
7.5.1 算法 148
7.5.2 硬件 148
7.5.3 程序 149
7.5.4 结果 150
7.5.5 修改程序 151
7.6 展望 151
第8章 扩展Arduino 152
8.1 盾板 153
8.2 原型盾板 154
8.3 作品28:做一块8个LED的定制盾板 155
8.3.1 元件 155
8.3.2 电路图 155
8.3.3 原型盾板的布局 156
8.3.4 设计 157
8.3.5 焊元件 158
8.3.6 修改定制盾板 159
8.4 用库扩展程序 159
8.5 microSD内存卡 164
8.6 作品29:向内存卡写数据 165
8.7 作品30:做一个温度记录仪 167
8.7.1 硬件 167
8.7.2 程序 168
8.8 用millis()和micros()做定时 170
8.9 作品31:做一个秒表 171
8.9.1 元件 171
8.9.2 电路图 172
8.9.3 程序 172
8.10 中断 174
8.10.1 中断模式 175
8.10.2 配置中断 175
8.10.3 启用或禁止中断 175
8.11 作品32:使用中断 175
8.12 展望 177
第9章 数字键盘 178
9.1 使用数字键盘 178
9.1.1 小键盘接线 179
9.1.2 给小键盘编程 179
9.1.3 测试程序 180
9.2 用switch-case做决策 181
9.3 作品33:做一个小键盘控制的锁 181
9.3.1 程序 182
9.3.2 工作原理 183
9.3.3 测试程序 184
9.4 展望 184
第 10章 用触摸屏获得用户输入 185
10.1 触摸屏 185
10.2 作品34:触摸屏上的定位 186
10.2.1 硬件 187
10.2.2 程序 187
10.2.3 测试程序 188
10.2.4 触摸屏上的坐标 189
10.3 作品35:做一个两区域触摸开关 189
10.3.1 程序 190
10.3.2 工作原理 191
10.3.3 测试程序 191
10.4 作品36:做一个三区域触摸开关 192
10.4.1 触摸屏坐标系 192
10.4.2 程序 192
10.4.3 工作原理 194
10.5 展望 194
第 11章 认识Arduino系列 195
11.1 作品37:在面包板上做自己的Arduino 196
11.1.1 元件 196
11.1.2 电路图 199
11.1.3 运行测试程序 201
11.2 众多的Arduino板 204
11.2.1 Arduino Uno 205
11.2.2 Freetronics Eleven 205
11.2.3 Freeduino 206
11.2.4 Boarduino 207
11.2.5 Arduino Nano 207
11.2.6 Arduino LilyPad 208
11.2.7 Arduino Mega 2560 208
11.2.8 Freetronics的EtherMega 209
11.2.9 Arduino Due 209
11.3 展望 211
第 12章 电机和运动 212
12.1 用伺服电机做轻量动作 212
12.1.1 选择伺服电机 213
12.1.2 连接伺服电机 214
12.1.3 使伺服电机工作 214
12.2 作品38:做一个指针式的温度计 215
12.2.1 元件 215
12.2.2 电路图 215
12.2.3 程序 216
12.3 使用电动机 218
12.4 作品39:控制电机 219
12.4.1 元件 219
12.4.2 电路图 220
12.4.3 程序 221
12.5 作品40:搭建并控制一个坦克机器人 222
12.5.1 元件 222
12.5.2 电路图 224
12.5.3 程序 227
12.6 碰撞检测 229
12.7 作品41:用微动开关检测坦克底盘的碰撞 229
12.7.1 电路图 230
12.7.2 程序 230
12.8 红外距离传感器 232
12.8.1 连线 233
12.8.2 测试红外距离传感器 233
12.9 作品42:用红外距离传感器检测坦克底盘的碰撞 235
12.10 超声波距离传感器 237
12.10.1 连接超声波传感器 237
12.10.2 使用超声波传感器 238
12.10.3 测试超声波距离传感器 238
12.11 作品43:用超声波距离传感器检测坦克底盘的碰撞 240
12.12 展望 242
第 13章 用Arduino接GPS 243
13.1 什么是GPS 244
13.2 测试GPS盾板 245
13.3 作品44:做一个简易GPS接收机 247
13.3.1 元件 247
13.3.2 程序 247
13.3.3 在LCD上显示位置 248
13.4 作品45:做一个精确的基于GPS的钟 249
13.4.1 元件 249
13.4.2 程序 249
13.5 作品46:随时间变化记录物体移动的位置 251
13.5.1 元件 251
13.5.2 程序 251
13.5.3 在地图上显示位置 253
13.6 展望 255
第 14章 无线数据通信 256
14.1 使用低成本无线模块 256
14.2 作品47:做一个无线遥控器 258
14.2.1 发射机电路的元件 258
14.2.2 发射机电路图 258
14.2.3 接收机电路的元件 259
14.2.4 接收机的电路图 260
14.2.5 发射机程序 261
14.2.6 接收机程序 262
14.3 用XBee无线数据模块来实现更大的范围和更快的速度 263
14.4 作品48:用XBee发送数据 264
14.4.1 程序 265
14.4.2 设置计算机来接收数据 265
14.5 作品49:做一个遥测温度计 266
14.5.1 元件 267
14.5.2 布局 267
14.5.3 程序 268
14.5.4 运作 269
14.6 展望 270
第 15章 红外遥控 271
15.1 什么是红外 271
15.2 准备红外器件 272
15.2.1 红外接收器 272
15.2.2 遥控器 273
15.2.3 测试程序 273
15.2.4 测量连接 274
15.3 作品50:做一个红外遥控的Arduino 275
15.3.1 元件 275
15.3.2 程序 275
15.3.3 扩展程序 276
15.4 作品51:做一辆红外遥控的坦克 277
15.4.1 元件 277
15.4.2 程序 277
15.5 展望 279
第 16章 读RFID标签 280
16.1 在RFID卡内部 281
16.2 测试硬件 282
16.2.1 电路图 282
16.2.2 测试电路图 282
16.3 作品52:做一个简易RFID控制系统 284
16.3.1 程序 284
16.3.2 工作原理 285
16.4 在Arduino内置的EEPROM里保存数据 286
16.5 作品53:做一个能记住上次动作的RFID控制器 288
16.5.1 程序 288
16.5.2 工作原理 290
16.6 展望 291
第 17章 数据总线 292
17.1 I2C总线 293
17.2 作品54:使用外部的EEPROM 294
17.2.1 元件 294
17.2.2 电路图 295
17.2.3 程序 296
17.2.4 结果 297
17.3 作品55:使用端口扩展集成电路 298
17.3.1 元件 298
17.3.2 电路图 298
17.3.3 程序 300
17.4 SPI总线 301
17.4.1 引脚连接 301
17.4.2 实现SPI 302
17.4.3 向SPI器件发送数据 302
17.5 作品56:使用数字变阻器 303
17.5.1 元件 303
17.5.2 电路图 304
17.5.3 程序 305
17.6 展望 306
第 18章 真实时钟 307
18.1 连接RTC模块 308
18.2 作品57:用RTC来得到和显示时间 308
18.2.1 元件 308
18.2.2 程序 309
18.2.3 工作原理 311
18.3 作品58:做一个简易数字钟 312
18.3.1 元件 312
18.3.2 程序 313
18.3.3 工作原理和结果 316
18.4 作品59:做一个RFID打卡机 316
18.4.1 元件 316
18.4.2 程序 317
18.4.3 工作原理 321
18.5 展望 322
第 19章 互联网 323
19.1 需要什么 323
19.2 作品60:做一个远程监控站 325
19.2.1 元件 325
19.2.2 程序 325
19.2.3 查找错误 328
19.2.4 工作原理 328
19.3 作品61:做一个Arduino推特机 329
19.3.1 元件 329
19.3.2 程序 329
19.4 从Web控制Arduino 331
19.5 作品62:建立对Arduino的遥控 331
19.5.1 元件 332
19.5.2 程序 333
19.5.3 远程控制你的Arduino 333
19.6 展望 335
第 20章 手机通信 336
20.1 硬件 337
20.1.1 准备电源盾板 338
20.1.2 硬件配置和测试 339
20.1.3 改变工作频率 340
20.2 作品63:做一个Arduino拨号器 342
20.2.1 元件 342
20.2.2 电路图 343
20.2.3 程序 343
20.2.4 工作原理 344
20.3 作品64:做一个Arduino短信机 345
20.3.1 程序 345
20.3.2 工作原理 346
20.4 作品65:建立一个短信遥控装置 346
20.4.1 元件 347
20.4.2 电路图 347
20.4.3 程序 348
20.4.4 工作原理 349
20.5 展望 350