第1章 初识Arduino. 1
1.1 什么是Arduino?… 1
1.2 Arduino的由来… 3
1.3 为什么使用Arduino做开发平台… 4
1.4 Arduino硬件——选择一款适合你的Arduino控制器… 6
1.4.1 认识不同型号的Arduino控制器… 6
1.4.2 众多的Arduino外围模块… 10
1.4.3 从Arduino UNO开始… 12
1.5 Arduino软件… 15
1.5.1 下载配置Arduino开发环境… 15
1.5.2 认识Arduino IDE. 15
1.5.3 安装Arduino驱动程序… 18
1.6 Blink——Arduino的Hello world!… 21
第2章 基础篇… 26
2.1 Arduino语言… 26
2.1.1 Arduino程序结构… 26
2.2 C\C++语言基础… 27
2.2.1 数据类型… 27
2.2.2 运算符与表达式… 29
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.10 循环结构… 34
2.3 电子元件和Arduino扩展模块… 37
2.4 传感器扩展板的使用… 40
2.5 Arduino I/O的简单控制… 41
2.5.1 数字I/O的使用… 41
2.5.2 项目:人体感应灯(数字传感器与继电器模块)… 53
2.5.3 模拟I/O的使用… 57
2.5.4 项目:电子温度计… 66
2.5.5 数字传感器与模拟传感器的使用… 69
2.6 与计算机交流——串口的使用… 72
2.6.1 串口输出… 72
2.6.2 串口输入… 73
2.6.3 实验:串口控制开关灯… 76
2.7 时间控制函数… 77
2.7.1 运行时间函数… 77
2.7.2 延时函数… 78
第3章 I/O口高级应用… 79
3.1 调声函数… 79
3.1.1 蜂鸣器发声… 80
3.2 项目:简易电子琴… 83
3.3 脉冲宽度测量函数… 85
3.3.1 超声波测距… 85
3.4 设置ADC参考电压… 89
3.5 外部中断… 90
3.5.1 外部中断的使用… 90
3.5.2 实验:外部中断触发蜂鸣器警报… 92
第4章 使用和编写类库… 94
4.1 编写并使用函数,提高程序的可读性… 94
4.2 使用Arduino类库… 96
4.3 编写Arduino类库… 100
4.3.1 编写头文件… 100
4.3.2 预处理命令… 101
4.3.3 宏定义… 102
4.3.4 文件包含… 102
4.3.5 条件编译… 102
4.3.6 版本兼容… 102
4.3.7 编写.cpp文件… 103
4.3.8 关键字高亮显示… 104
4.3.9 建立示例程序… 105
4.4 类库优化与发布… 106
第5章 通信篇… 107
5.1 硬件串口通信——HardwareSerial的使用… 107
5.1.1 HardwareSerial类成员函数… 110
5.1.2 print和write输出方式的差异… 114
5.1.3 read和peek输入方式的差异… 116
5.1.4 串口读取字符串… 118
5.1.5 串口事件… 120
5.1.6 实验:串口控制RGB LED调光… 122
5.1.7 更好的串口监视器——串口调试助手… 125
5.2 软件模拟串口通信——SoftwareSerial库的使用… 126
5.2.1 SoftwareSerial库的局限性… 126
5.2.2 SoftwareSerial类成员函数… 126
5.2.3 建立一个软串口通信… 127
5.2.4 实验:Arduino间的串口通信… 128
5.2.5 同时使用多个软串口… 132
5.3 IIC总线的使用——Wire库的使用… 133
5.3.1 IIC主机、从机与引脚… 133
5.3.2 Wire类库成员函数… 134
5.3.3 IIC连接方法… 137
5.3.4 主机写数据,从机接收数据… 138
5.3.5 从机发送数据,主机读取数据… 140
SPI库的使用… 144
5.3.6 SPI引脚… 144
5.3.7 SPI总线上的从设备选择… 145
5.3.8 SPI类库的成员函数… 145
5.3.9 SPI总线上的数据发送与接收… 147
5.3.10 实验:使用数字电位器AD5206. 147
5.3.11 软件模拟SPI通信… 151
5.3.12 实验:使用74HC595扩展I/O口… 152
第6章 存储篇… 157
6.1 断电也能保存数据——EEPROM库的使用… 157
6.1.1 EEPROM类的成员函数… 157
6.1.2 写入操作… 158
6.1.3 读取操作… 159
6.1.4 清除操作… 160
6.1.5 使用共用体存储各类型数据到EEPROM.. 161
SD卡库的使用… 164
6.1.6 格式化SD卡… 164
6.1.7 SD库的成员函数… 165
6.1.8 使用SD卡读写模块… 171
6.1.9 创建文件… 172
6.1.10 删除文件… 174
6.1.11 写文件… 176
6.1.12 读文件… 178
6.2 项目:SD卡环境数据记录器… 181
6.2.1 DHT11温湿度检测模块的使用… 181
6.2.2 硬件连接方法… 182
6.2.3 温湿度记录器… 184
6.2.4 在Excel中分析数据… 187
第7章 无线通信篇… 191
7.1 红外遥控… 191
7.1.1 IRremote库成员函数… 192
7.1.2 红外接收… 195
7.1.3 红外发射… 198
7.1.4 实验:遥控家电设备… 199
第8章 LCD显示篇… 204
8.1 1602 LCD的使用(LiquidCrystal类库的使用)… 204
8.1.1 将1602 LCD连接到Arduino. 204
8.1.2 4位数据线接法… 205
8.1.3 1602 LCD相关参数… 207
8.1.4 LiquidCrystal类的成员函数… 207
8.1.5 实验:HelloWorld. 212
8.1.6 实验:将串口输入数据显示到1602 LCD上… 214
8.1.7 实验:显示滚动效果… 215
8.1.8 实验:显示自定义字符… 217
8.2 项目:制作电子时钟… 221
8.2.1 DS1307时钟模块的使用… 221
8.2.2 电子时钟… 227
8.3 图形显示器的使用——u8glib的使用… 230
8.3.1 选择LCD并连接到Arduino. 230
8.3.2 连接到Arduino并建立u8g对象… 231
8.3.3 u8glib程序结构… 232
8.3.4 纯文本显示… 232
8.3.5 数据显示… 234
8.3.6 实验:绘制图形… 235
8.3.7 实验:显示图片… 238
第9章 USB库的使用… 241
9.1 USB设备模拟相关函数… 241
9.1.1 USB鼠标类的成员函数… 241
9.1.2 USB键盘类的成员函数… 243
9.2 模拟键盘输入信息… 246
9.2.1 Arduino Leonardo在模拟USB设备后,无法正常下载程序。… 247
9.2.2 模拟键盘组合按键… 248
9.2.3 实验:使用摇杆模块控制计算机鼠标… 250
9.2.4 项目:PPT播放遥控器… 254
第10章 Ethernet库的使用… 257
10.1 Ethernet相关硬件介绍… 257
10.2 Ethernet库… 260
10.2.1 Ethernet 类… 260
10.2.2 IPAddress 类… 261
10.2.3 EthernetServer类… 262
10.2.4 EthernetClient类… 263
10.3 Ethernet的初始化… 266
10.3.1 自定义IP地址… 266
10.3.2 DHCP获取IP地址… 267
10.4 通过Telnet建立简易聊天室… 268
10.4.1 建立Arduino Telnet聊天服务器… 268
10.4.2 Windows Telnet客户端的使用… 270
10.5 Ethernet与Web应用… 272
10.5.1 HTTP协议简介… 272
10.5.2 HTTP响应… 274
10.5.3 网页客户端… 275
10.5.4 网页服务器… 277
10.6 UDP通信… 280
10.6.1 EthernetUDP类… 280
10.6.2 使用UDP收发数据… 282
10.7 项目:网页控制Arduino. 284
第11章 附录… 291
11.1 使用专业IDE编写Arduino项目… 291
11.2 常见问题及解决方法… 294
11.2.1 驱动无法正常安装… 294
11.2.2 下载程序时提示avrdude: stk500_getsync(): not in sync: resp=0x00. 297
11.2.3 使用第三方类库时编译出错,提示WProgram.h: No such file or directory:… 297
11.2.4 能否使用AVRGCC的方法在Arduino IDE中开发Arduino?… 298
11.2.5 Arduino是否支持其他型号的芯片?… 298
11.2.6 Arduino开源使用的协议是什么?… 298
11.2.7 能否使用AVR-Libc、汇编等开发Arduino?… 298
11.3 Arduino Leonardo手册… 299
11.4 Arduino DUE手册… 303
l 11.5 ASCII码对照表… 308
11.6 串口通信可用config配置… 312
11.7 USB键盘库支持的键盘功能按键列表… 313
参考文献… 315