第1章入门1
1.0 介绍1
1.1 安装集成开发环境(IDE)3
1.2 设置Arduino板5
1.3 使用集成开发环境(IDE)准备一个Arduino程序7
1.4上传并运行闪烁素描8
1.5创建并保存程序9
1.6使用Arduino11
第2章让程序为你工作15
2.0介绍15
2.1构建一个Arduino程序15
2.2使用简单的原始类型(变量)17
2.3使用浮点数18
2.4使用一组数值20
2.5使用Arduino的String功能22
2.6使用C字符串26
2.7把逗号分隔的文本拆分成组27
2.8把一个数字转换为字符串29
2.9将字符串转换为数字31
2.10将你的代码划分为多个功能块34
2.11从函数返回多个值38
2.12根据条件采取行动40
2.13重复一个语句序列42
2.14使用计数器重复执行语句44
2.15跳出循环46
2.16基于单个变量进行不同的操作47
2.17字符和数量值的比较49
2.18字符串的比较51
2.19逻辑比较的操作52
2.20执行位运算53
2.21复合运算和赋值55
第3章使用数学运算符56
3.0介绍56
3.1加,减,乘,除56
3.2值的递增和递减57
3.3找出两个值相除的余数58
3.4确定绝对值59
3.5把一个数约束在一个数值范围内 59
3.6寻找一些值的最小或最大值60
3.7计算一个数的乘方61
3.8取平方根61
3.9浮点数向上和向下取整62
3.10使用三角函数63
3.11生成随机数63
3.12设置和读取位66
3.13位的移动69
3.14在一个int或long值里提取高字节和低字节70
3.15从高字节和低字节组合成一个int或long值71
第4章串口通信74
4.0简介 74
4.1从Arduino发送调试信息到你的计算机77
4.2从Arduino发送格式化的文本和数值数据80
4.3在Arduino接收串口数据83
4.4在单个消息中从Arduino发送多个文本字段88
4.5在Arduino上从单个消息中接收多个文本字段93
4.6从Arduino发送二进制数据96
4.7在计算机上接收来自Arduino的二进制数据100
4.8从Processing向Arduino发送二进制值101
4.9发送多个Arduino引脚的值104
4.10如何移动PC或Mac上的鼠标光标108
4.11使用Arduino控制谷歌地球112
4.12在你的计算机中的文件里记录Arduino数据118
4.13在同一时间将数据发送到两个串口设备121
4.14在同一时间接收来自两个串口设备的数据124
4.15设置你的计算机上的Processing以发送和接收串口数据127
第5章简单数字和模拟输入129
5.0介绍129
5.1使用一个开关131
5.2不用外部电阻使用一个开关134
5.3可靠地检测一个开关的闭合136
5.4确定开关被按下多长时间139
5.5读取数字键盘143
5.6读取模拟值146
5.7改变值的范围147
5.8读取超过六路模拟输入149
5.9显示5V以内的电压152
5.10响应电压变化155
5.11测量超过5V的电压(分压器)156
第6章获取传感器输入158
6.0介绍158
6.1动作检测159
6.2光的探测161
6.3动作检测(集成被动红外探测器)163
6.4距离测量164
6.5精确测量距离168
6.6振动检测171
6.7声音检测172
6.8温度测量175
6.9读取RFID标签178
6.10跟踪旋转动作181
6.11跟踪一个以上的旋转编码器的运动183
6.12在繁忙的程序里跟踪旋转动作185
6.13使用鼠标187
6.14从GPS获取位置191
6.15使用陀螺仪检测旋转195
6.16方向检测200
6.17从游戏控制板(PlayStation)获取输入205
6.18读取加速度207
第7章可视输出210
7.0介绍210
7.1连接和使用LED212
7.2调节LED的亮度215
7.3驱动高功率LED216
7.4调整LED的颜色218
7.5多个LED排序:创建一个条形图221
7.6多个LED排序:制作一个追逐序列(霹雳游侠)224
7.7使用复用技术控制一个LED阵列225
7.8显示图像上的LED矩阵228
7.9控制LED阵列:Charlieplexing方法231
7.10驱动7段LED显示器236
7.11使用复用技术驱动多位7段LED显示器239
7.12使用MAX7221移位寄存器驱动多位7段LED显示器242
7.13使用MAX72xx 移位寄存器控制LED阵列244
7.14使用PWM扩展芯片(TLC5940)增加模拟输出的数量247
7.15使用模拟面板表作为显示器250
第8章物理输出252
8.0简介252
8.1控制舵机的位置254
8.2使用电位器或传感器控制一个或两个舵机256
8.3控制连续旋转舵机的速度257
8.4使用计算机指令控制舵机258
8.5驱动无刷电机(使用业余调速器)260
8.6控制电磁铁和继电器261
8.7使物体振动262
8.8使用晶体管驱动有刷电机264
8.9使用H桥控制有刷电机的旋转方向266
8.10控制有刷电机H桥的方向和速度269
8.11使用传感器来控制有刷电机的方向和转速(L293 H桥)271
8.12驱动双极步进电机277
8.13驱动双极步进电机(使用EasyDriver板)279
8.14驱动单极步进电机(ULN2003A)283
第9章音频输出285
9.0简介285
9.1音调播放286
9.2演奏简单的旋律288
9.3产生一个以上的同步音290
9.4生成音频音调的同时使LED渐暗292
9.5播放一个WAV文件295
9.6MIDI控制298
9.7制作音频合成器301
第10章遥控外部设备303
10.0简介303
10.1对一个红外遥控器做出响应303
10.2解码红外遥控信号306
10.3模仿遥控器信号309
10.4控制数码相机312
10.5通过改装遥控开关来控制交流设备314
第11章显示屏的使用318
11.0 介绍318
11.1 文字LCD屏的连接和使用318
11.2 格式化文本321
11.3 光标和显示的开启和关闭323
11.4 滚动文字325
11.5 显示特殊符号328
11.6 创建自定义字符331
11.7 显示比单个字符更大的符号333
11.8 显示小于单个字符的像素336
11.9 连接和使用图形LCD显示器338
11.10 创建用于图形显示器的位图341
11.11 在电视机上显示文本343
第12章时间和日期的使用348
12.0 介绍348
12.1 创建延时348
12.2 使用millis来确定持续时间349
12.3 更精确地测量一个脉冲的持续时间353
12.4 把Arduino作为一个时钟来用355
12.5 创建一个可以周期性调用函数的闹钟364
12.6 使用一个实时时钟367
第13章使用I2C和SPI进行通信372
13.0 简介372
13.1 使用BlinkM模块控制RGB LED375
13.2 使用Wii的双节棍加速度计380
13.3 外部实时时钟的接口384
13.4 添加外部EEPROM存储器386
13.5 用数字温度计读取温度390
13.6 只用两条导线驱动4位7段LED显示394
13.7 集成一个I2C端口扩展器397
13.8 使用SPI驱动多位7段LED显示器400
13.9 两个或两个以上的Arduino板之间的通信402
第14章无线通信406
14.0 介绍406
14.1 使用低成本无线模块发送消息406
14.2 把Arduino接入ZigBee或802.15.4网络412
14.3 将消息发送到一个特定的XBee417
14.4 在XBee间互传传感器数据420
14.5 激活连接到XBee的执行器425
14.6 使用低成本收发器发送消息429
14.7 与蓝牙设备通讯434
第15章以太网和网络437
15.0 简介437
15.1 以太网扩展板的设置439
15.2 自动获取你的IP地址441
15.3 解析主机名到IP地址(DNS)443
15.4 从Web服务器请求数据445
15.5 使用XML从Web服务器请求数据451
15.6 把Arduino设置成一个Web服务器454
15.7 处理进入的Web请求457
15.8 处理针对特定页面的请求460
15.9 使用HTML格式化Web服务器响应465
15.10 使用表单的网页服务(POST)469
15.11 包含大量数据的网页服务472
15.12 发送Twitter消息480
15.13 发送和接收简单消息(UDP)485
15.14 从Internet时间服务器获取时间492
15.15 监测Pachube数据馈送498
15.16 将信息发送到Pachube504
第16章库的使用修改和创建510
16.0 简介510
16.1 使用内置库510
16.2 安装第三方库511
16.3 库的修改512
16.4 创建你自己的库516
16.5 创建一个使用其他库的库521
16.6 为Arduino 1.0版更新第三方库527
第17章高级编程和内存操作529
17.0 介绍529
17.1 了解Arduino程序的构建过程530
17.2 判断可用和已用的RAM 量532
17.3 存储和读取程序存储器中的数字值534
17.4 存储和检索字符串在程序存储器537
17.5 使用#define 和const而不用整数型变量539
17.6 使用条件编译540
第18章使用控制器芯片的硬件543
18.0 介绍543
18.1 在永久性EEPROM存储器中存储数据546
18.2 使用硬件中断550
18.3 设置定时器持续时间552
18.4 设置定时器脉冲宽度和持续时间554
18.5 创建一个脉冲发生器556
18.6 更改定时器的PWM频率560
18.7 脉冲计数562
18.8 更精确的脉冲测量564
18.9 快速测量模拟值567
18.10 减少电池消耗568
18.11 快速设定数字引脚572
18.12 使用编程器上传程序576
18.13 更换Arduino的Bootloader577
18.14 对Uno重新编程来模拟原生的USB设备577
附件A电子元件581
附件B使用原理图和数据手册585
附件C电路的构建和连接591
附件D 软件问题排错诀窍593
附件E硬件问题排错诀窍596
附件F数字和模拟引脚598
附件G ASCII和扩展字符集601
附录H 移植到Arduino1.0版