book

《Arduino程序设计基础》

 

作者:陈吕洲

出版社:北京航空航天大学出版社

出版时间:2014-1-1

ISBN:978-7-5124-1339-9

购买该书及学习套件示例程序扩展阅读

Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。

因为Arduino的种种优势,越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;大学里,自动化、软件,甚至艺术专业,也纷纷开展了Arduino相关课程。

笔者2008年开始接触Arduino,被Arduino的简单易用所吸引,后创建ArduinoCN中文社区,致力于Arduino教学与推广。现从事硬件开发工作,在工作中也经常使用Arduino做开发,积累了一定经验。

本书即是笔者将过去撰写的Arduino相关教程与自身开发经验整理而成,主要针对大学Arduino教学实验编写,亦可用于相关开发人员及爱好者入门学习。

本书体系结构清晰,内容丰富,涵盖Arduino基础知识及高级应用,中途穿插简单项目制作,用于巩固知识与扩展提高,同时提供了常用API参考,方便读者实践时查阅。

各章节所涉及内容如下:

第1章简单介绍Arduino历史、软硬件及安装使用方法;

第2章讲解语言基础、基本输入输出方法、串口通信与一些常用函数的使用;

第3章讲解Arduino I/O口的一些高级应用;

第4章详细讲解如何使用和编写Arduino类库;

第5章介绍串口、IIC、SPI 三种通信方式在Arduino上的使用方法;

第6章介绍了如何使用EEPROM和SD卡记录保持数据;

第7章讲解Arduino红外通信的使用方法;

第8章以1602和12864两种常见液晶显示器为例,介绍了Arduino驱动液晶显示器的方法。

第9章是针对特殊型号的Arduino控制器(Leonardo、Micro、Due等)的USB功能进行讲解。

第10章讲解了Arduino进行网络通信库的使用方法。

第11章为附录,介绍了使用Visual Studio开发Arduino的方法及一些常见问题的处理方式,并附带了一些控制器手册和相关配置表格,方便读者查阅。

掌握前三章,你便基本了解了Arduino的开发方法,可以完成不少小型项目开发。第4章以后为进阶教程,讲解了Arduino的一些常用类库的使用。如果是大学教学使用,按章节顺序循序渐进即可,教师亦可以设计一些小型项目用于学生实践练习;如果你有一定软硬件开发基础,则可根据你的实际项目要求,直接阅读相应章节。

感谢以下网友对我写作本书提供的帮助:大茶园丁、kiwi、ZZZ、奔跑、珜羽、海神、三水。特别感谢潘拥军先生的悉心检查与耐心指导。

由于笔者水平有限,书中难免存在不足与错误之处,敬请读者批评指正。你可以通过ArduinoCN中文社区(http://www.arduino.cn)参与本书相关内容的讨论,亦可以直接与我联系,我的新浪微博:http://weibo.com/coloz。

第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

OpenJumper创始人、MostFun创始人、资深Arduino玩家。

发表评论

你的email 地址不会公开

你也可以使用 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

清除表单提交