具体描述
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。
因为Arduino的种种优势,越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;大学里,自动化、软件,甚至艺术专业,也纷纷开展了Arduino相关课程。
笔者2008年开始接触Arduino,被Arduino的简单易用所吸引,后创建ArduinoCN中文社区,致力于Arduino教学与推广。现从事硬件开发工作,在工作中也经常使用Arduino做开发,积累了一定经验。
本书即是笔者将过去撰写的Arduino相关教程与自身开发经验整理而成,主要针对大学Arduino教学实验编写,亦可用于相关开发人员及爱好者入门学习。
本书体系结构清晰,内容丰富,涵盖Arduino基础知识及高级应用,中途穿插简单项目制作,用于巩固知识与扩展提高,同时提供了常用API参考,方便读者实践时查阅。
作者简介
目录信息
1.1 什么是Arduino
1.2 Arduino的由来
1.3 为什么使用Arduino作为开发平台
1.4 Arduino硬件——选择一款适合自己的Arduino控制器
1.4.1 认识不同型号的Arduino控制器
1.4.2 众多的Arduino外围模块
1.4.3 从ArduinoUNO开始
1.5 Arduino软件
1.5.1 下载配置Arduino开发环境
1.5.2 认识ArduinoIDE
1.5.3 安装Arduino驱动程序
1.6 Blink——Arduino的HellloWorld!
第2章 基础篇
2.1 Arduino语言及程序结构
2.1.1 Arduino语言
2.1.2 Arduino程序结构
2.2 C/C++语言基础
2.2.1 数据类型
2.2.2 运算符
2.2.3 表达式
2.2.4 数组
2.2.5 字符串
2.2.6 注释
2.2.7 用流程图表示程序
2.2.8 顺序结构
2.2.9 选择结构
2.2.10 循环结构
2.3 电子元件和Arduino扩展模块
2.4 传感器扩展板的使用
2.5 ArduinoI/O的简单控制
2.5.1 数字I/O的使用
2.5.2 项目:人体感应灯(继电器模块与数字传感器)
2.5.3 模拟I/O的使用
2.5.4 项目:电子温度计
2.5.5 数字传感器与模拟传感器的使用
2.6 与计算机交流——串口的使用
2.6.1 串口输出
2.6.2 串口输入
2.6.3 实验:串口控制开关灯
2.7 时间控制函数
2.7.1 运行时间函数
2.7.2 延时函数
第3章 I/O口高级应用
3.1 调声函数
3.2 项目
3.3 脉冲宽度测量函数及超声波测距
3.3.1 脉冲宽度测量函数
3.3.2 超声波测距
3.4 设置ADC参考电压
3.5 外部中断
3.5.1 外部中断的使用
3.5.2 实验:外部中断触发蜂鸣器报警
第4章 使用和编写类库
4.1 编写并使用函数,提高程序的可读性
4.2 使用Arduino类库
4.3 编写Arduino类库
4.3.1 编写头文件
4.3.2 预处理命令
4.3.3 宏定义
4.3.4 文件包含
4.3.5 条件编译
4.3.6 版本兼容
4.3.7 编写.cpp文件
4.3.8 关键字高亮显示
4.3.9 建立示例程序
4.4 类库优化与发布
第5章 通信篇
5.1 硬件串口通信——HardwareSerial类库的使用
5.1.1 HardwareSerial类库成员函数
5.1.2 print()和 write()输出方式的差异
5.1.3 read()和peeek()输入方式的差异
5.1.4 串口读取字符串
5.1.5 串口事件
5.1.6 实验:串口控制RGBLED调光
5.1.7 更好的串口监视器——串口调试助手
5.2 软件模拟串口通信——SoftwareSerial类库的使用
5.2.1 SoftwareSerial类库的局限性
5.2.2 SoftwareSerial类库成员函数
5.2.3 建立一个软串口通信
5.2.4 实验:Arduino间的串口通信
5.2.5 同时使用多个软串口
5.3 IIC总线的使用——Wire类库的使用
5.3.1 IIC主机、从机与引脚
5.3.2 Wire类库成员函数
5.3.3 IIC连接方法
5.3.4 主机写数据,从机接收数据
5.3.5 从机发送数据,主机读取数据
5.4 SPI总线的使用——SPI类库的使用
5.4.1 SPI引脚
5.4.2 SPI总线上的从设备选择
5.4.3 SPI类库成员函数
5.4.4 SPI总线上的数据发送与接收
5.4.5 实验:使用数字电位器AD5206
5.4.6 软件模拟SPI通信
5.4.7 实验:使用74HC595扩展I/O口
第6章 存储篇
6.1 断电也能保存数据——EEPROM类库的使用
6.1.1 EEPROM类库成员函数
6.1.2 写入操作
6.1.3 读取操作
6.1.4 清除操作
6.1.5 使用共用体存储各类型数据到EEPROM
6.2 保存大量数据——SD卡类库的使用
6.2.1 格式化SD卡
6.2.2 SD卡类库成员函数
6.2.3 使用 SD卡读/写模块
6.2.4 创建文件
6.2.5 删除文件
6.2.6 写文件
6.2.7 读文件
6.3 项目:SD卡环境数据记录器
6.3.1 DHT11温湿度检测模块的使用
6.3.2 硬件连接方法
6.3.3 温湿度记录器
6.3.4 在Excel中分析数据
第7章 无线通信篇——红外遥控
7.1 IRremote类库成员函数
7.2 红外接收
7.3 红外发射
7.4 实验:遥控家电设备
第8章 LCD显示篇
8.1 1602LCD的使用——LiquidCrystal类库的使用
8.1.1 将1602LCD与Arduino连接
8.1.2 4位数据线接法
8.1.3 1602LCD相关参数
8.1.4 LiquidCrystal类库成员函数
8.1.5 实验:“helllo,world!”
8.1.6 实验:将串口输入数据显示到1602LCD上
8.1.7 实验:显示滚动效果
8.1.8 实验:显示自定义字符
8.2 项目:制作电子时钟
8.2.1 DS1307时钟模块的使用
8.2.2 电子时钟
8.3 图形显示器的使用——u8glib类库的使用
8.3.1 选择LCD并连接到Arduino
8.3.2 连接到Arduino并建立u8g对象
8.3.3 u8glib程序结构
8.3.4 纯文本显示
8.3.5 数据显示
8.3.6 实验:绘制图形
8.3.7 实验:显示图片——位图取模
第9章 USB类库的使用
9.1 USB设备模拟相关函数
9.1.1 USB鼠标类的成员函数
9.1.2 USB键盘类的成员函数
9.2 模拟键盘输入信息
9.2.1 Arduino Leonardo在模拟USB设备后,无法正常下载程序
9.2.2 模拟键盘组合按键
9.3 实验:使用摇杆模块控制计算机鼠标
9.4 项目:PPT播放遥控器
第10章 Ethernet类库的使用
10.1 Ethernet相关硬件介绍
10.2 Ethernet类库
10.2.1 Ethernet类
10.2.2 IPAddress类
10.2.3 EthernetServer类
10.2.4 EthernetClient类
10.3 Ethernet的初始化
10.3.1 自定义IP地址
10.3.2 DHCP获取IP地址
10.4 通过Telnet建立简易聊天室
10.4.1 建立Arduino Telnet聊天服务器
10.4.2 Windows Telnet客户端的使用
10.5 Ethernet与Web应用
10.5.1 HTTP协议简介
10.5.2 HTTP响应
10.5.3 网页客户端
10.5.4 网页服务器
10.6 UDP通信
10.6.1 EthernetUDP类
10.6.2 使用UDP收/发数据
10.7 项目:网页控制Arduino
附录
A.1 使用专业IDE编写 Arduino项目
A.2 常见问题及解决方法
A.3 ArduinoLeonardo手册
A.4 ArduinoDue手册
A.5 ASCII码对照表
A.6 串口通信可用的config配置
A.7 USB键盘库支持的键盘功能按键列表
参考文献
· · · · · · (收起)
读后感
虽是机械专业,但不懂电与编程还是寸步难行。学习Arduino可以设计出机电作品,而Arduino相对也比较容易上手。在Arduino中文论坛得知了这本书,还在论坛中与奈何大大讨论了问题,他对新人也很友好。 本书最好的就是项目式学习,在介绍一些传感器模块,然后就列出相应的应用。此...
虽是机械专业,但不懂电与编程还是寸步难行。学习Arduino可以设计出机电作品,而Arduino相对也比较容易上手。在Arduino中文论坛得知了这本书,还在论坛中与奈何大大讨论了问题,他对新人也很友好。 本书最好的就是项目式学习,在介绍一些传感器模块,然后就列出相应的应用。此...
虽是机械专业,但不懂电与编程还是寸步难行。学习Arduino可以设计出机电作品,而Arduino相对也比较容易上手。在Arduino中文论坛得知了这本书,还在论坛中与奈何大大讨论了问题,他对新人也很友好。 本书最好的就是项目式学习,在介绍一些传感器模块,然后就列出相应的应用。此...
虽是机械专业,但不懂电与编程还是寸步难行。学习Arduino可以设计出机电作品,而Arduino相对也比较容易上手。在Arduino中文论坛得知了这本书,还在论坛中与奈何大大讨论了问题,他对新人也很友好。 本书最好的就是项目式学习,在介绍一些传感器模块,然后就列出相应的应用。此...
虽是机械专业,但不懂电与编程还是寸步难行。学习Arduino可以设计出机电作品,而Arduino相对也比较容易上手。在Arduino中文论坛得知了这本书,还在论坛中与奈何大大讨论了问题,他对新人也很友好。 本书最好的就是项目式学习,在介绍一些传感器模块,然后就列出相应的应用。此...
用户评价
我拿到这本厚厚的书时,第一印象是它异常扎实的内容覆盖面。它不仅仅停留在让你点亮LED灯的层面,而是真正深入到了微控制器的工作机制。作者对ATmega328P的寄存器操作的讲解,简直是一股清流。很多教材只是告诉你“把这个端口设置为高电平”,但这本书却会告诉你为什么通过设置某个寄存器的特定位来实现这个操作,这对于想要脱离IDE图形化界面的控制,走向底层优化的读者来说,是极其宝贵的知识财富。我记得在讲解PWM调光时,作者没有直接使用`analogWrite()`函数,而是手把手带我们配置了预分频器和计数器上限,这让我彻底明白了脉冲宽度调制背后的数学原理。这种“授人以渔”的教学方式,让我在后续尝试移植到其他型号的MCU时,也能够举一反三,而不是被特定库函数所束缚。虽然初读时会觉得有些“硬核”,但一旦坚持下来,收获绝对是质的飞跃。
说实话,我一开始对市面上这么多重复的入门书籍持怀疑态度,但翻开这本书后,我发现它在“传感器应用”这一块做得尤为出色。它不仅仅介绍了几个流行的传感器(比如温湿度、超声波),更重要的是,它针对每个传感器都深入分析了其数据手册中的关键参数,比如分辨率、漂移和线性度。例如,在讲解光敏电阻时,书中不仅给出了分压电路,还探讨了如何利用查表法和最小二乘法对非线性输出进行校准,以提高测量精度。这种对数据真实性的追求,让我的项目不再是简单的“能跑起来”,而是真正达到了“能准确工作”的水平。此外,书中关于“如何为自己的项目选择合适的执行器”的讨论,也避免了新手常犯的“大马拉小车”或“小马拉不动车”的资源浪费问题。这本书更像是一本工具书,时不时拿出来查阅特定模块的最佳实践,总能获得新的启发。
这本书的排版实在是太清爽了,那种恰到好处的留白让人在阅读复杂电路图和代码时,眼睛丝毫不会感到疲惫。我特别欣赏作者在讲解基础概念时所采用的类比方式,比如将数字输入比作水龙头的开关,将模拟输入比作水流的强弱调节,这种生活化的比呼让初学者能迅速抓住核心原理。尤其是关于定时器和中断那一章,以往我看其他教材时总觉得晦涩难懂,但这本书里通过一个模拟时钟的实际案例,将复杂的时序控制讲得条理分明,每一步骤的代码实现都配有详细的注释和逻辑推演。更别提附带的光盘里那些可以直接导入IDE的实验工程文件了,对于我这种动手能力强于纯理论学习的人来说,简直是福音,省去了大量的配置和调试时间。唯一的小遗憾是,对于更深层次的I2C和SPI总线协议的底层数据包结构解析得还不够深入,如果能加入一些示波器抓包的实例截图就更完美了,但瑕不掩瑜,作为入门到进阶的桥梁读物,它的价值是无可替代的。
这本书的价值在于它成功地架设了一座从理论到实际应用的高速公路。它的章节结构设计非常巧妙,每一章的技术难度和复杂度都是阶梯式递增的。刚开始的几章内容确实比较基础,但正是这些扎实的基础,使得后面的高级主题,如软件I2C模拟和软件串口的实现,变得顺理成章。我尤其赞赏作者对“软件模拟”概念的强调,这展示了对硬件资源受限情况下的编程智慧。在处理中断服务程序(ISR)时,作者对全局变量的访问限制以及如何在ISR内安全地与主循环通信的技巧讲解得非常到位,这在很多其他书籍中都是被一带而过的重点。这本书的字体选择和代码块的格式化也极其友好,使得我能够长时间沉浸其中而不感到枯燥。总而言之,它提供的是一套完整的系统思维框架,而不是零散的知识点集合。
这本书的行文风格显得非常严谨且富有条理,像一位经验丰富的老工程师在带徒弟。最让我印象深刻的是它的错误排查和调试章节。作者没有回避初学者在实验中必然会遇到的“坑”,反而系统地列举了十几种常见的硬件连接错误、编译错误以及运行时错误,并附带了对应的排查流程图。比如,关于上电复位(POR)的讲解,书中不仅说明了它如何工作,还通过一个案例展示了错误的电源去耦电容如何导致芯片无法稳定启动。这种对细节的把控,体现了作者深厚的实践功底。阅读体验上,作者非常擅长用清晰的图表来替代冗长的文字描述,特别是关于面包板接线和模块连接的示意图,清晰到几乎不需要任何额外的文字辅助就能准确无误地完成搭建。这对于我这种需要快速验证想法的创客来说,极大地提高了效率。
主要是为了买套装吧
千呼万唤始出来,每天都去论坛看,终于拿到手了 花了2天看,终于搞定了;估计还得几周来回味;确实不得不说写得好,抛开文笔来说 ;内容真的是我需要的,万分感谢啊!!
适合有一定单片机基础的用户入门
写的真不错,代码都有,入门必备
CH7无线通信红外遥控可能孩子下几节课会用到。