目录
入门篇
第1章引言
1.1认识Arduino
1.1.1Arduino的“前世今生”
1.1.2Arduino核心板系列
1.1.3Arduino IDE
1.1.4Bootloader工作原理
1.2实战11: 揭秘Nano核心板
1.2.1问题和目标
1.2.2解决方案
1.3基于Arduino的电子系统设计
1.3.1系统设计流程
1.3.2采用面包板的样机制作方法
1.4Arduino和MATLAB的协同系统设计
1.4.1协同系统特色优势
1.4.2协同系统设计方案
本章小结
拓展练习
第2章体验Arduino
2.1实战21: 从Nano向PC发送数据
2.1.1问题和目标
2.1.2解决方案
2.1.3扩展讨论
2.2实战22: Serial的实现代码
2.2.1问题和目标
2.2.2解决方案
2.2.3扩展讨论
2.3实战23: 隐藏的main()函数
2.3.1问题和目标
2.3.2解决方案
2.3.3扩展讨论
2.4实战24: 用Nano烧写Bootloader
2.4.1问题和目标
2.4.2解决方案
2.4.3扩展讨论
2.5IDE编程的特点
本章小结
拓展练习
基础篇
第3章Arduino程序设计基础
3.1Arduino编程简介
3.2Arduino常用数据类型
3.2.1浮点数精度的问题
3.2.2变量作用域
3.3Arduino中的运算
3.3.1算术运算符
3.3.2关系运算符
3.3.3位运算符
3.3.4逻辑运算符
3.3.5赋值运算符
3.3.6限制取值范围
3.3.7取整
3.3.8三角函数
3.3.9随机数
3.4Arduino的循环语句
3.4.1while循环
3.4.2do…while循环
3.4.3for循环
3.4.4循环的跳出
3.5Arduino的条件判断语句
3.5.1if语句
3.5.2switch case语句
3.6Arduino数组与字符串
3.6.1Arduino中的数组
3.6.2Arduino中的字符串
3.6.3字符串的常用操作
3.7String及其成员函数
3.8Arduino中的函数
本章小结
拓展练习
第4章数字引脚资源应用设计
4.1Nano的数字引脚资源
4.2实战41: 用pinMode()和digitalWrite()函数点亮板载LED
4.2.1问题和目标
4.2.2解决方案
4.2.3扩展讨论
4.3实战42: 用digitalRead()函数读取拨码开关输入后控制板载LED
4.3.1问题和目标
4.3.2解决方案
4.3.3扩展讨论
4.4实战43: 用引脚寄存器读取多拨码开关输入后控制板载LED
4.4.1问题和目标
4.4.2解决方案
4.4.3扩展讨论
4.5实战44: 验证引脚上拉电阻的抗干扰作用
4.5.1问题和目标
4.5.2解决方案
4.5.3扩展讨论
4.6实战45: 用analogWrite()函数产生PWM波形使LED亮度渐变
4.6.1问题和目标
4.6.2解决方案
4.6.3扩展讨论
本章小结
拓展练习
第5章计时资源应用设计
5.1Nano的延时控制与时间测量
5.2实战51: 用delay()函数产生阻塞指定长度延时
5.2.1问题和目标
5.2.2解决方案
5.2.3扩展讨论
5.3实战52: 用while循环产生阻塞条件判断延时
5.3.1问题和目标
5.3.2解决方案
5.3.3扩展讨论
5.4实战53: 用millis()或micros()函数实现计时功能
5.4.1问题和目标
5.4.2解决方案
5.4.3扩展讨论
5.5实战54: 用pulseIn()函数测量脉冲宽度
5.5.1问题和目标
5.5.2解决方案
5.5.3扩展讨论
本章小结
拓展练习
第6章模拟信号测量应用设计
6.1Nano自带的模拟信号采集资源
6.2实战61: 用analogRead()函数测量模拟电压
6.2.1问题和目标
6.2.2解决方案
6.2.3扩展讨论
6.3实战62: 使用analogReference()函数提高模拟测量精度
6.3.1问题和目标
6.3.2解决方案
6.3.3扩展讨论
6.4实战63: 使用外部基准源提高模拟测量精度
6.4.1问题和目标
6.4.2解决方案
6.4.3扩展讨论
6.5实战64: 测量analogRead()函数的采样频率
6.5.1问题和目标
6.5.2解决方案
6.5.3扩展讨论
6.6实战65: 提高analogRead()函数的采样频率
6.6.1问题和目标
6.6.2解决方案
6.6.3扩展讨论
6.7实战66: 用串口绘图器观察模数采集信号
6.7.1问题和目标
6.7.2解决方案
6.7.3扩展讨论
6.8实战67: 用DSA模块测量双极性模拟信号
6.8.1问题和目标
6.8.2解决方案
6.8.3扩展讨论
本章小结
拓展练习
第7章I2C和SPI通信资源应用设计
7.1Nano引脚的I2C和SPI通信功能
7.2I2C协议原理
7.3实战71: 用Wire库实现I2C通信
7.3.1问题和目标
7.3.2解决方案
7.3.3扩展讨论
7.4SPI协议原理
7.5实战72: 用SPI库实现SPI通信
7.5.1问题和目标
7.5.2解决方案
7.5.3扩展讨论
本章小结
拓展练习
第8章自带与外扩存储资源的设计
8.1Arduino的数据存储资源
8.2实战81: 用内置EEPROM存储数据
8.2.1问题和目标
8.2.2解决方案
8.2.3扩展讨论
8.3实战82: 用外部EEPROM存储数据
8.3.1问题和目标
8.3.2解决方案
8.3.3扩展讨论
8.4实战83: 用外部SD卡存储数据
8.4.1问题和目标
8.4.2解决方案
8.4.3扩展讨论
本章小结
拓展练习
第9章外扩模拟信号输出的设计
9.1模拟信号输出概述
9.2实战91: 用面包板扩展DA功能
9.2.1问题和目标
9.2.2解决方案
9.2.3扩展讨论
9.3实战92: 用DAR模块实现DA功能
9.3.1问题和目标
9.3.2解决方案
9.3.3扩展讨论
9.4实战93: 用TI902实现并行DA功能
9.4.1问题和目标
9.4.2解决方案
9.4.3扩展讨论
9.5实战94: 用PCF8591实现串行DA功能
9.5.1问题和目标
9.5.2解决方案
9.5.3扩展讨论
本章小结
拓展练习
综合篇
第10章Arduino与PC协同设计
10.1Arduino与PC协同的UART通信功能
10.2实战101: 用Serial.println()函数向PC发送文本信息
10.2.1问题和目标
10.2.2解决方案
10.2.3扩展讨论
10.3实战102: 用Serial.println()函数向PC发送字符编码数据
10.3.1问题和目标
10.3.2解决方案
10.3.3扩展讨论
10.4实战103: 用Serial.write()函数向PC发送二进制数据
10.4.1问题和目标
10.4.2解决方案
10.4.3扩展讨论
10.5实战104: 用Serial.available()和Serial.read()函数阻塞式接收
PC发送的字符
10.5.1问题和目标
10.5.2解决方案
10.5.3扩展讨论
10.6实战105: 串口高级读取功能
10.6.1问题和目标
10.6.2解决方案
10.6.3扩展讨论
10.7实战106: 用serialEvent()函数并发式接收PC发送的数据
10.7.1问题和目标
10.7.2解决方案
10.7.3扩展讨论
10.8实战107: 用SoftwareSerial实现软串口通信
10.8.1问题和目标
10.8.2解决方案
10.8.3扩展讨论
本章小结
拓展练习
第11章MATLAB与Arduino协同设计
11.1MATLAB的通信协同功能
11.1.1串口通信设计需考虑的关键问题
11.1.2MATLAB的串口对象与属性
11.2实战111: 创建MATLAB串口对象并配置属性
11.2.1问题和目标
11.2.2解决方案
11.2.3扩展讨论
11.3MATLAB串口发数据机制
11.4实战112: MATLAB向Arduino发送字符命令
11.4.1问题和目标
11.4.2解决方案
11.4.3扩展讨论
11.5实战113: MATLAB向Arduino发送二进制数据
11.5.1问题和目标
11.5.2解决方案
11.5.3扩展讨论
11.6MATLAB串口读数据机制
11.7实战114: MATLAB同步读Arduino发送字符编码数据
11.7.1问题和目标
11.7.2解决方案
11.7.3扩展讨论
11.8实战115: MATLAB同步读Arduino发送的二进制数据帧
11.8.1问题和目标
11.8.2解决方案
11.8.3扩展讨论
11.9MATLAB串口的相关事件和回调函数
11.9.1事件类型和回调属性
11.9.2创建和执行回调函数
11.10实战116: 用MATLAB串口异步读取Arduino发送的数据
11.10.1问题和目标
11.10.2解决方案
11.10.3扩展讨论
本章小结
拓展练习
第12章Arduino实现快速傅里叶变换
12.1问题和目标
12.2原理思路
12.2.1复数的表示
12.2.2FFT经典蝶形运算
12.3解决方案
12.4测试验证
12.5扩展讨论
12.5.1Arduino自带pow()函数的易错点
12.5.2Arduino内存的局限性
本章小结
拓展练习
第13章简约型红外通信链路设计
13.1问题和目标
13.2原理思路
13.2.1发射机设计
13.2.2接收机设计
13.3解决方案
13.4测试验证
13.5扩展讨论
本章小结
拓展练习
第14章Arduino与MATLAB协同的超声雷达设计
14.1问题和目标
14.2系统整体设计方案
14.3系统硬件设计实现
14.3.1超声雷达传感器
14.3.2舵机云台模块
14.3.3声音传感器
14.3.4集成硬件样机
14.4系统软件设计实现
14.4.1Arduino软件设计
14.4.2MATLAB软件设计
本章小结
拓展练习
参考文献