第1章 Arduino与Intel Curie 1
1.1 什么是Arduino 1
1.2 为什么使用Arduino作为开发平台 4
1.3 Genuino 101与Intel Curie 5
1.4 配置Genuino 101开发环境 9
1.5 认识Arduino IDE 10
1.6 添加Genuino 101支持 12
1.7 Blink——Arduino的Hello World 14
第2章 Arduino编程基础 18
2.1 Arduino语言 18
2.2 C/C++语言基础 19
2.2.1 数据类型 20
2.2.2 运算符 22
2.2.3 表达式 22
2.2.4 数组 22
2.2.5 字符串 23
2.2.6 注释 24
2.2.7 用流程图来表示程序 24
2.2.8 顺序结构 25
2.2.9 选择结构 25
2.2.10 循环结构 27
2.3 电子元件和扩展模块 30
2.4 Arduino扩展板的使用 33
2.5 数字I/O的使用 35
2.5.1 数字信号 35
2.5.2 流水灯实验 38
2.5.3 按键控制LED实验 40
2.6 模拟I/O的使用 46
2.6.1 模拟信号 46
2.6.2 呼吸灯实验 48
2.6.3 光敏电阻检测环境光实验 52
2.7 数字传感器与模拟传感器的使用 54
2.8 与计算机交流——串口的使用 56
2.8.1 串口输出 56
2.8.2 串口输入 58
2.8.3 串口开关LED实验 60
2.9 时间函数 61
2.9.1 运行时间函数 61
2.9.2 延时函数 62
2.9.3 RTC函数 63
第3章 I/O的高级应用 66
3.1 调声函数 66
3.1.1 蜂鸣器发声 67
3.1.2 简易电子琴 70
3.2 脉冲宽度测量函数 72
3.3 外部中断 76
3.3.1 外部中断的使用 77
3.3.2 外部中断触发蜂鸣器警报实验 78
第4章 使用和编写类库 81
4.1 通过库管理器添加库 82
4.2 手动添加库并使用 83
4.3 编写Arduino类库 87
4.3.1 编写函数 87
4.3.2 编写头文件与源文件 90
4.3.3 关键字高亮 93
4.3.4 建立示例程序 94
4.3.5 类库优化与发布 95
第5章 定时器 96
5.1 定时器中断 96
5.2 定时器输出PWM 97
第6章 串口进阶 99
6.1 串行与并行通信 99
6.2 硬件串口 99
6.3 print和write输出方式的差异 101
6.4 HardwareSerial类成员函数 103
6.5 read和peek输入方式的差异 109
6.6 串口读取字符串 111
6.7 串口事件 113
6.8 串口缓冲区 115
6.9 实验:串口控制RGB LED调光 115
6.10 软件模拟串口通信——SoftwareSerial库的使用 118
6.10.1 SoftwareSerial类成员函数 118
6.10.2 建立软串口通信 120
6.10.3 同时使用多个软串口 121
第7章 显示篇 123
7.1 认识显示设备 123
7.1.1 I2C设备 123
7.1.2 SPI设备 125
7.2 u8g2标准库 128
7.2.1 新建设备对象 129
7.2.2 初始化与缓冲区操作 131
7.2.3 文本显示 131
7.2.4 数据显示 133
7.2.5 中文显示 134
7.2.6 绘制图形 135
7.2.7 图片显示 138
第8章 CurieIMU库的使用 141
8.1 配置IMU及获取数据 141
8.2 解算AHRS姿态 145
8.3 姿态数据可视化 147
8.4 IMU中断检测 152
8.5 神经元与机器学习 158
第9章 存储篇 165
9.1 EEPROM的使用 165
9.1.1 写数据 166
9.1.2 读数据 167
9.1.3 擦除数据 169
9.2 SPI Flash的使用 170
9.2.1 新建文件并写入 172
9.2.2 列出文件 174
9.2.3 读取文件 175
9.2.4 擦除数据 177
附录A Arduino/Genuino 101数据手册 181
附录B ASCII码对照表 185
附录C 串口通信可用config配置 189
附录D Zephyr简介 191
后记 197
参考文献 199