Arduino权威指南(原书第3版)
Michael Margolis, Brian Jepson, Nicholas Robert Weldin
田金周 译
出版时间:2024年11月
页数:667
“当开始一个新的Arduino项目时,这本书是最好的资源。本书不仅适合初学者学习,对有经验的开发人员也很有帮助。”
——Don Coleman
Chariot Solutions首席创新官

想要创造可以和物理世界进行交互的设备吗?本书是专为那些想尝试用流行的Arduino控制器和编程环境的人准备的。你将学习200多种实用技巧和技术,用来构建各种目标和原型,如IOT(物联网)解决方案、环境监测、定位和位置感知系统,以及可以响应触摸、声音、热和光的产品。
本书基于Arduino 1.8版本,包含实用的示例和原则,可以帮助你立即入门Arduino、开展Arduino应用开发,以及改进现有项目。本书适合工程师,设计师、艺术家、学生或Arduino爱好者阅读。
学完本书,你将:
● 快速了解Arduino开发板和基本的软件概念。
● 学习读取数字信号和模拟信号的基础技术。
● 将Arduino与各种流行的输入设备和传感器结合使用。
● 驱动可视显示器,产生声音并控制几种类型的电机。
● 使用远程控制(包括电视和电器)与设备进行交互。
● 学习处理时间延迟和时间测量的技术。
● 应用高级编码和内存处理技术。
  1. 前言
  2. 第1章 入门指南
  3. 1.0 概述
  4. 1.1 安装集成开发环境
  5. 1.2 安装Arduino板
  6. 1.3 使用集成开发环境配制一个Arduino草图
  7. 1.4 上传和运行Blink草图
  8. 1.5 创建和保存草图
  9. 1.6 第一个简单的Arduino项目
  10. 1.7 使用不包含在标准发布库中的开发板
  11. 1.8 使用32位Arduino板(或兼容板)
  12. 第2章 Arduino编程
  13. 2.0 简介
  14. 2.1 典型的Arduino sketch
  15. 2.2 使用简单基本类型(变量)
  16. 2.3 使用浮点数
  17. 2.4 使用数组
  18. 2.5 使用Arduino字符串函数
  19. 2.6 使用C字符串
  20. 2.7 将逗号分隔的文本拆分为组
  21. 2.8 将数字转换为字符串
  22. 2.9 将字符串转换为数字
  23. 2.10 将代码结构化为功能块
  24. 2.11 从函数返回多个值
  25. 2.12 条件语句
  26. 2.13 重复一个语句序列
  27. 2.14 用计数器重复陈述
  28. 2.15 跳出循环
  29. 2.16 基于单个变量采取不同的操作
  30. 2.17 比较字符和数字值
  31. 2.18 字符串的比较
  32. 2.19 执行逻辑比较
  33. 2.20 执行位运算
  34. 2.21 复合运算和赋值
  35. 第3章 数学运算
  36. 3.0 简介
  37. 3.1 加减乘除
  38. 3.2 让变量递增或者递减
  39. 3.3 两数相除的余数
  40. 3.4 获取绝对值
  41. 3.5 约束一个数为指定范围内的值
  42. 3.6 找出最大值或者最小值
  43. 3.7 幂运算
  44. 3.8 计算平方根
  45. 3.9 浮点数向上和向下取整
  46. 3.10 三角函数
  47. 3.11 随机数
  48. 3.12 设置和读取位
  49. 3.13 移位操作
  50. 3.14 截取整型或者长整型的高位和低位字节
  51. 3.15 通过高字节和低字节组成一个整型或者长整型
  52. 第4章 串口通信
  53. 4.0 简介
  54. 4.1 从Arduino发送消息到计算机
  55. 4.2 发送格式化的文本和数值数据
  56. 4.3 Arduino接收串口数据
  57. 4.4 在单条消息中发送多个文本字段
  58. 4.5 在Arduino上从单条消息中接收多个文本字段
  59. 4.6 从Arduino发送二进制数据
  60. 4.7 在计算机上接收来自Arduino的二进制数据
  61. 4.8 从Processing发送二进制数据到Arduino
  62. 4.9 发送多个Arduino引脚的值
  63. 4.10 将Arduino数据记录到计算机文件中
  64. 4.11 发送数据到多个串口设备
  65. 4.12 从多个串口设备接收数据
  66. 4.13 在树莓派上使用Arduino
  67. 第5章 简单的数字输入和模拟输入
  68. 5.0 简介
  69. 5.1 使用开关
  70. 5.2 使用一个无外部电阻器的开关
  71. 5.3 按下开关时进行可靠的检测(去抖动)
  72. 5.4 确定开关被按下的时间
  73. 5.5 读取键盘
  74. 5.6 读取模拟值
  75. 5.7 改变数值范围
  76. 5.8 读取6个以上的模拟输入
  77. 5.9 测量5V内的电压
  78. 5.10 响应电压变化
  79. 5.11 测量大于5V的电压(分压器)
  80. 第6章 获取传感器的输入
  81. 6.0 简介
  82. 6.1 一个内置多个传感器的Arduino
  83. 6.2 运动检测
  84. 6.3 检测光强
  85. 6.4 检测生物的动作
  86. 6.5 测量距离
  87. 6.6 精确测量距离
  88. 6.7 检测振动
  89. 6.8 检测声音
  90. 6.9 测量温度
  91. 6.10 读取RFID (NFC)标签
  92. 6.11 追踪旋转动作
  93. 6.12 在繁忙程序里使用中断追踪旋转动作
  94. 6.13 使用鼠标
  95. 6.14 从GPS获取位置信息
  96. 6.15 使用陀螺仪检测旋转
  97. 6.16 检测方向
  98. 6.17 读取加速度计
  99. 第7章 可视化输出
  100. 7.0 简介
  101. 7.1 连接和使用LED
  102. 7.2 调节LED的亮度
  103. 7.3 驱动高能耗LED
  104. 7.4 调节LED的颜色
  105. 7.5 控制大量彩色LED
  106. 7.6 串联多个LED:绘制条形图
  107. 7.7 串联多个LED:流水序列
  108. 7.8 用Multiplexing控制LED矩阵
  109. 7.9 用LED矩阵显示图像
  110. 7.10 控制LED矩阵:查理复用算法
  111. 7.11 驱动7段LED
  112. 7.12 驱动多位7段显示屏:多路复用
  113. 7.13 用最少的引脚驱动多位7段显示屏
  114. 7.14 用MAX72xx移位寄存器控制一组LED
  115. 7.15 使用PWM扩展芯片实现增加模拟输出数量
  116. 7.16 用模拟面板仪表作为输出
  117. 第8章 物理输出
  118. 8.0 简介
  119. 8.1 使用伺服控制旋转位置
  120. 8.2 使用电位计或传感器控制伺服旋转
  121. 8.3 控制连续旋转伺服装置的速度
  122. 8.4 使用计算机命令控制伺服系统
  123. 8.5 驱动无刷电机(使用hobby伺服速度控制器)
  124. 8.6 控制电磁阀和继电器
  125. 8.7 使物体振动
  126. 8.8 使用晶体管驱动有刷电机
  127. 8.9 用H桥控制有刷电机的方向
  128. 8.10 用H桥控制有刷电机的方向和速度
  129. 8.11 使用传感器控制有刷电机的方向和速度
  130. 8.12 驱动双极步进电机
  131. 8.13 驱动双极步进电机(使用易驱板)
  132. 8.14 使用ULN2003A驱动步进电机
  133. 第9章 音频输出
  134. 9.0 简介
  135. 9.1 播放音调
  136. 9.2 演奏简单的旋律
  137. 9.3 同时产生多个音调
  138. 9.4 在不干扰PWM的情况下生成音频音调
  139. 9.5 控制MIDI
  140. 9.6 制作音频合成器
  141. 9.7 实现高质量音频合成
  142. 第10章 远程控制外部设备
  143. 10.0 简介
  144. 10.1 响应红外遥控器
  145. 10.2 解码红外遥控信号
  146. 10.3 模拟远程控制信号
  147. 10.4 控制数码相机
  148. 10.5 通过Hack远程控制开关控制交流设备
  149. 第11章 使用显示屏
  150. 11.0 简介
  151. 11.1 连接和使用文字LCD
  152. 11.2 文本格式化
  153. 11.3 打开或关闭光标和显示屏
  154. 11.4 滚动文本
  155. 11.5 显示特殊符号
  156. 11.6 创建自定义字符
  157. 11.7 显示大于单个字符的符号
  158. 11.8 显示小于单个字符的像素
  159. 11.9 选择图形LCD
  160. 11.10 控制全彩LCD
  161. 11.11 控制单色OLED
  162. 第12章 使用时间和日期
  163. 12.0 简介
  164. 12.1 使用毫秒确定持续时间
  165. 12.2 在代码中创建暂停
  166. 12.3 更精确地测量脉冲的持续时间
  167. 12.4 使用Arduino作为时钟
  168. 12.5 创建定时任务以定期调用函数
  169. 12.6 使用实时时钟
  170. 第13章 利用I2C和SPI进行通信
  171. 13.0 简介
  172. 13.1 连接多个I2C设备
  173. 13.2 连接多个SPI设备
  174. 13.3 使用I2C集成电路
  175. 13.4 使用I2C端口扩展器增加I/O
  176. 13.5 两个或多个Arduino板之间的通信
  177. 13.6 使用Wii nunchuck加速度计
  178. 第14章 简单的无线通信
  179. 14.0 简介
  180. 14.1 使用低成本无线模块发送消息
  181. 14.2 通过ZigBee或802.15.4网络连接Arduino
  182. 14.3 向指定XBee发送消息
  183. 14.4 在XBee之间发送传感器数据
  184. 14.5 激活连接到XBee的执行器
  185. 14.6 与经典蓝牙设备通信
  186. 14.7 与蓝牙低能耗设备通信
  187. 第15章 Wi-Fi和以太网
  188. 15.0 简介
  189. 15.1 连接到以太网
  190. 15.2 自动获取你的IP地址
  191. 15.3 发送和接收简单消息(UDP)
  192. 15.4 使用带有内置Wi-Fi的Arduino
  193. 15.5 使用低成本模块连接到Wi-Fi
  194. 15.6 从Web响应中提取数据
  195. 15.7 使用XML从Web服务器请求数据
  196. 15.8 将Arduino设置为Web服务器
  197. 15.9 处理传入的Web请求
  198. 15.10 处理特定页面的传入请求
  199. 15.11 使用HTML格式化Web服务器响应
  200. 15.12 使用表单请求Web数据(POST)
  201. 15.13 提供包含大量数据的网页
  202. 15.14 发送Twitter消息
  203. 15.15 物联网数据交换
  204. 15.16 向MQTT代理发布数据
  205. 15.17 从MQTT消息服务订阅数据
  206. 15.18 从互联网时间服务器获取时间
  207. 第16章 库的使用、修改和创建
  208. 16.0 简介
  209. 16.1 使用内建的库
  210. 16.2 安装第三方库
  211. 16.3 修改库
  212. 16.4 创建自己的库
  213. 16.5 基于其他库开发新库
  214. 16.6 更新第三方库适配Arduino 1.0
  215. 第17章 高级编程和内存操作
  216. 17.0 简介
  217. 17.1 理解Arduino编译过程
  218. 17.2 确定已用和空闲RAM的数量
  219. 17.3 在程序存储器中保存和查找数值
  220. 17.4 在程序存储器中保存和查找字符串
  221. 17.5 利用#define和const代替整数
  222. 17.6 使用条件编译
  223. 第18章 使用控制器芯片硬件
  224. 18.0 简介
  225. 18.1 在EEPROM中持久存储数据
  226. 18.2 当引脚状态发生变化时自动响应
  227. 18.3 执行重复任务
  228. 18.4 设置定时器脉冲宽度和持续时间
  229. 18.5 创建脉冲发生器
  230. 18.6 改变定时器的PWM频率
  231. 18.7 脉冲计数
  232. 18.8 更精确地测量脉冲
  233. 18.9 快速测量模拟值
  234. 18.10 降低电池消耗
  235. 18.11 快速设置数字引脚
  236. 18.12 使用编程器上传sketch
  237. 18.13 替换Arduino的bootloader
  238. 18.14 移动PC或者Mac的鼠标指针
  239. 附录A 电子元件
  240. 附录B 使用原理图和数据手册
  241. 附录C 构建和连接电路
  242. 附录D 软件异常排查
  243. 附录E 硬件排错技巧
  244. 附录F 数字和模拟引脚
  245. 附录G ASC II和扩展字符集
书名:Arduino权威指南(原书第3版)
译者:田金周 译
国内出版社:机械工业出版社
出版时间:2024年11月
页数:667
书号:978-7-111-76314-7
原版书书名:Arduino Cookbook, Third Edition
原版书出版商:O'Reilly Media
Michael Margolis
 
Michael Margolis曾分别在索尼、微软、朗讯贝尔实验室担任高层,致力于实时计算领域,有30多年的工作经验。
 
 
Brian Jepson
 
Brian Jepson是O’Reilly的编辑,黑客,以及Providence Geeks和Rhode Island Mini Maker Faire的联合创始人。

Brian Jepson在领英学习从事设计管理和工程管理工作。
 
 
Nicholas Robert Weldin
 
Nicholas Robert Weldin在英国东伦敦大学的里克斯中心工作,帮助有学习困难的人获取在线资源。
 
 
本书封面上的动物是一只机械玩具兔子。这种机械玩具通过弹簧、齿轮、滑轮、杠杆等简单的机械,以机械能为动力进行运动。这类玩具历史悠久,古希腊、中国和阿拉伯世界都有曾出现过。
机械玩具制造在近代早期的欧洲蓬勃发展。14世纪末,德国发明家Karel Grod展示了飞行发条玩具。当时著名的达·芬奇、笛卡儿和伽利略等科学家都因在机械玩具方面的研究而备受瞩目。达·芬奇著名的机械狮子是 1509年为路易十二制作的,它可以走到国王面前,裂开胸膛,露出一朵百合花。
18世纪末,机械玩具制作艺术达到了顶峰,其标志为瑞士手表制造商Pierre Jaquet-Droz和他的儿子Henri-Louis制作了著名的“自动机”。他们制作的人形玩偶动作栩栩如生,表演了将钢笔浸入墨水池、书写完整的句子、画草图、从书页上吹橡皮灰等。19世纪,欧美公司生产出了流行的发条玩具,至今仍具有收藏价值。
由于这些原始的玩具结构复杂、装饰精美、制作成本高且耗时长,因此它们只供皇室成员或成人娱乐。直到 19世纪末,随着大规模生产和廉价材料(锡,后来是塑料)的出现,机械玩具才成为儿童的玩具。这些廉价的、会动的新奇玩具流行了大约一个世纪,直到电池驱动的玩具取代它们。
购买选项
定价:179.00元
书号:978-7-111-76314-7
出版社:机械工业出版社