第1章 初识Arduino 1
1.1 什么是Arduino 1
1.2 Arduino的由来 4
1.3 为什么使用Arduino作为开发平台 5
1.4 Arduino硬件——选择一款适合自己的Arduino控制器 6
1.4.1 认识不同型号的Arduino控制器 6
1.4.2 众多的Arduino外围模块 10
1.4.3 从Arduino UNO开始 12
1.5 Arduino软件 14
1.5.1 下载配置Arduino开发环境 14
1.5.2 认识Arduino IDE 15
1.5.3 安装Arduino驱动程序 17
1.6 Blink——Arduino的Hello World! 20
第2章 基础篇 25
2.1 Arduino语言及程序结构 25
2.1.1 Arduino语言 25
2.1.2 Arduino程序结构 26
2.2 C/C++语言基础 26
2.2.1 数据类型 27
2.2.2 运算符 28
2.2.3 表达式 29
2.2.4 数组 29
2.2.5 字符串 30
2.2.6 注释 30
2.2.7 用流程图表示程序 31
2.2.8 顺序结构 31
2.2.9 选择结构 31
2.2.1 0循环结构 34
2.3 电子元件和Arduino扩展模块 37
2.4 传感器扩展板的使用 39
2.5 Arduino I/O的简单控制 40
2.5.1 数字I/O的使用 40
2.5.2 项目:人体感应灯(继电器模块与数字传感器) 51
2.5.3 模拟I/O的使用 54
2.5.4 项目:电子温度计 63
2.5.5 数字传感器与模拟传感器的使用 65
2.6 与计算机交流——串口的使用 67
2.6.1 串口输出 68
2.6.2 串口输入 69
2.6.3 实验:串口控制开关灯 71
2.7 时间控制函数 72
2.7.1 运行时间函数 72
2.7.2 延时函数 73
第3章 I/O口高级应用 74
3.1 调声函数 74
3.2 项目:简易电子琴 78
3.3 脉冲宽度测量函数及超声波测距 80
3.3.1 脉冲宽度测量函数 80
3.3.2 超声波测距 80
3.4 设置ADC参考电压 84
3.5 外部中断 84
3.5.1 外部中断的使用 85
3.5.2 实验:外部中断触发蜂鸣器报警 87
第4章 使用和编写类库 89
4.1 编写并使用函数,提高程序的可读性 89
4.2 使用Arduino类库 91
4.3 编写Arduino类库 95
4.3.1 编写头文件 95
4.3.2 预处理命令 96
4.3.3 宏定义 97
4.3.4 文件包含 97
4.3.5 条件编译 97
4.3.6 版本兼容 98
4.3.7 编写.cpp文件 98
4.3.8 关键字高亮显示 99
4.3.9 建立示例程序 100
4.4 类库优化与发布 101
第5章 通信篇 102
5.1 硬件串口通信——HardwareSerial类库的使用 102
5.1.1 HardwareSerial类库成员函数 104
5.1.2 print()和write()输出方式的差异 109
5.1.3 read()和peek()输入方式的差异 110
5.1.4 串口读取字符串 112
5.1.5 串口事件 113
5.1.6 串口缓冲区 115
5.1.7 实验:串口控制RGB LED调光 116
5.1.8 更好的串口监视器——串口调试助手 118
5.2 软件模拟串口通信——SoftwareSerial类库的使用 118
5.2.1 SoftwareSerial类库的局限性 119
5.2.2 SoftwareSerial类库成员函数 119
5.2.3 建立一个软串口通信 120
5.2.4 实验:Arduino间的串口通信 121
5.2.5 同时使用多个软串口 125
5.3 IIC总线的使用——Wire类库的使用 125
5.3.1 IIC主机、从机与引脚 125
5.3.2 Wire类库成员函数 126
5.3.3 IIC连接方法 129
5.3.4 主机写数据,从机接收数据 130
5.3.5 从机发送数据,主机读取数据 133
5.4 SPI总线的使用——SPI类库的使用 135
5.4.1 SPI引脚 136
5.4.2 SPI总线上的从设备选择 137
5.4.3 SPI类库成员函数 137
5.4.4 SPI总线上的数据发送与接收 138
5.4.5 实验:使用数字电位器AD5206 138
5.4.6 软件模拟SPI通信 143
5.4.7 实验:使用74HC595扩展I/O口 143
第6章 存储篇 147
6.1 断电也能保存数据——EEPROM类库的使用 147
6.1.1 EEPROM类库成员函数 147
6.1.2 写入操作 148
6.1.3 读取操作 149
6.1.4 清除操作 150
6.1.5 存储各类型数据到EEPROM 151
6.2 保存大量数据——SD卡类库的使用 153
6.2.1 格式化SD卡 153
6.2.2 SD卡类库成员函数 153
6.2.3 使用SD卡读/写模块 158
6.2.4 创建文件 159
6.2.5 删除文件 161
6.2.6 写文件 163
6.2.7 读文件 165
6.3 项目:SD卡环境数据记录器 166
6.3.1 DHT11温湿度检测模块的使用 167
6.3.2 硬件连接方法 167
6.3.3 温湿度记录器 170
6.3.4 在Excel中分析数据 172
第7章 无线通信篇——红外遥控 176
7.1 IRremote类库成员函数 177
7.2 红外接收 179
7.3 红外发射 182
7.4 实验:遥控家电设备 183
第8章 LCD显示篇 188
8.1 1602 LCD的使用——LiquidCrystal类库的使用 188
8.1.1 将1602 LCD与Arduino连接 188
8.1.2 1602 LCD相关参数 190
8.1.3 LiquidCrystal类库成员函数 190
8.1.4 实验:“hello,world!” 195
8.1.5 实验:将串口输入数据显示到1602 LCD上 196
8.1.6 实验:显示滚动效果 198
8.1.7 实验:显示自定义字符 199
8.2 项目:制作电子时钟 202
8.2.1 DS1307时钟模块的使用 203
8.2.2 电子时钟 208
8.3 图形显示器的使用——u8glib类库的使用 210
8.3.1 使用MINI12864显示屏 210
8.3.2 使用其他图形液晶显示器 211
8.3.3 u8glib程序结构 213
8.3.4 纯文本显示 213
8.3.5 数据显示 215
8.3.6 实验:绘制图形 216
8.3.7 实验:显示图片——位图取模 217
第9章 USB类库的使用 221
9.1 USB设备模拟相关函数 221
9.1.1 USB鼠标类的成员函数 221
9.1.2 USB键盘类的成员函数 223
9.2 模拟键盘输入信息 225
9.2.1 Arduino Leonardo在模拟USB设备后,无法正常下载程序 227
9.2.2 模拟键盘组合按键 227
9.3 实验:使用摇杆模块控制计算机鼠标 230
9.4 项目:PPT播放遥控器 233
第10章 Ethernet类库的使用 236
10.1 Ethernet相关硬件介绍 236
10.2 Ethernet类库 240
10.2.1 Ethernet类 240
10.2.2 IPAddress类 241
10.2.3 EthernetServer类 241
10.2.4 EthernetClient类 243
10.3 Ethernet的初始化 246
10.3.1 自定义IP地址 246
10.3.2 DHCP获取IP地址 246
10.4 通过Telnet建立简易聊天室 247
10.4.1 建立Arduino Telnet聊天服务器 248
10.4.2 Windows Telnet客户端的使用 249
10.5 Ethernet与Web应用 251
10.5.1 HTTP协议简介 251
10.5.2 HTTP响应 253
10.5.3 网页客户端 254
10.5.4 网页服务器 256
10.6 UDP通信 259
10.6.1 EthernetUDP类 259
10.6.2 使用UDP收/发数据 261
10.7 项目:网页控制Arduino 263
附录 269
A.1 使用专业IDE编写Arduino项目 269
A.2 常见问题及解决方法 271
A.3 Arduino Leonardo手册 275
A.4 Arduino Due手册 279
A.5 ASCII码对照表 284
A.6 串口通信可用的config配置 287
A.7 USB键盘库支持的键盘功能按键列表 288
A.8 常见Arduino型号的参数比较表 290
后记 291
参考文献 293