| 作者 |
| 耿兴元(美)威廉·斯托林斯(William Stallings) |
| 丛书名 |
| 中兴通讯技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787190902162 |
| 简要 |
| 简介 |
| 内容简介书籍通信书籍 ---------------------------JavaScript机器人:用Raspberry Pi、Arduino和BeagleBone构建NodeBots--------------------------- 本书展示使用JavaScript构建响应周围世界的机器人的方法。书中详细介绍使用带有Arduino、树莓派和BeagleBone的开源Johnny-Five机器人库,逐步构建和编程能够漫游、游泳、打字、散步、跳舞、发送提醒、制作音乐、表达情感等的机器人的方法。书中详细说明了项目所需的材料,找到材料的地点以及购买材料的估计成本,并且在计划和排除项目故障的过程中会提供大量帮助,这样你可以轻松地构建本书中的项目。本书深入解读Johnny-Five库、树莓派、Arduino和BeagleBone,非常适合具有JavaScript背景的中级创客。 ---------------------------JavaScript编程精解(原书第2版)--------------------------- 本书包括三个部分。前11章讨论JavaScript语言本身的一些特性。接下来的8章讨论网页浏览器和JavaScript在网页编程中的实践。最后两个章节专门讲解另一个使用JavaScript编程的环境——Node.js。 |
| 目录 |
---------------------------JavaScript机器人:用Raspberry Pi、Arduino和BeagleBone构建NodeBots--------------------------- 译者序 前言 第1章 用Lo-tech材料建造机器人 1 1.1 构建SimpleBot 2 1.1.1 材料单 2 1.1.2 构建步骤 3 1.1.3 安装Node.js包 5 1.1.4 使用基本程序测试构建 6 1.1.5 故障排除——接线 6 1.1.6 一个简单的驱动程序 7 1.1.7 故障排除——伺服电机 9 1.2 切断电源线 10 1.2.1 构建无线SimpleBot 10 1.2.2 连接 10 1.2.3 控制SimpleBot 11 1.2.4 疑难解答 14 1.3 进一步探索 15 第2章 TypeBot 17 2.1 材料清单 18 2.2 剖析机器人手臂 19 2.2.1 设计手臂 19 2.2.2 约束手臂 19 2.3 构建硬件 20 2.3.1 底座和肩膀 20 2.3.2 肘部 21 2.3.3 腕部 22 2.3.4 手指 23 2.3.5 脑部 23 2.4 编写软件 24 2.4.1 创建项目文件 24 2.4.2 控制伺服 24 2.4.3 初始化 27 2.4.4 按键排序 29 2.4.5 首次运行 31 2.4.6 微调手臂 32 2.5 进一步探索 32 第3章 节点船 33 3.1 材料清单 33 3.2 潜艇电机吊舱 34 3.2.1 为什么要使用电机驱动器 35 3.2.2 电机吊舱零件 35 3.2.3 修改电机 36 3.2.4 测试电机 36 3.2.5 完成电机 36 3.2.6 插入电机 37 3.2.7 打孔 38 3.2.8 关闭电机吊舱 39 3.2.9 电线的防水 39 3.3 安装Spark核心板 39 3.4 第一个Spark项目 40 3.5 焊接电机驱动器 42 3.6 给小船接线 42 3.6.1 给电机驱动器供电 43 3.6.2 连接Spark核心板和电机驱动器 44 3.6.3 连接电机 44 3.7 电机的控制:代码 45 3.7.1 添加按键事件 46 3.7.2 记录按键状态 47 3.8 船体装配 48 3.9 伺服系统 49 3.9.1 伺服系统编程 50 3.9.2 安装方向舵 52 3.10 启航 52 3.11 进一步探索 53 第4章 piDuino5移动机器人平台 55 4.1 材料清单 55 4.2 安装开发板和软件 56 4.2.1 在树莓派上安装Node.js 57 4.2.2 下载piDuino5代码和依赖项 57 4.2.3 插入Arduino 57 4.2.4 通过WebSockets测试Johnny-Five 57 4.2.5 浏览app.js 58 4.2.6 初始化Johnny-Five 58 4.2.7 控制硬件 59 4.2.8 使用WebSockets进行低延迟控制 59 4.2.9 从任何地方连接 59 4.3 装配硬件 60 4.4 用智能手机控制 61 4.4.1 下载piDuino5 Web应用程序 61 4.4.2 将localtunnel发布到Web应用程序上 61 4.4.3 在手机上试用Web应用程序 62 4.5 浏览app.js和index.html 62 4.5.1 存储localtunnel地址和前端 62 4.5.2 服务用户界面 62 4.5.3 触摸屏操纵杆 63 4.5.4 建立连接 63 4.5.5 发送命令 63 4.6 进一步探索 64 第5章 用Johnny-Five控制六足机器人 65 5.1 材料清单 65 5.2 从命令行控制机器人 66 5.3 phoenix.js简介 66 5.4 组装机器人 68 5.4.1 准备底盘 68 5.4.2 安装电子产品 68 5.4.3 准备伺服 69 5.4.4 安装髋关节 69 5.4.5 安装股骨 70 5.4.6 安装胫骨 70 5.5 坐标系统 71 5.6 修整伺服 71 5.6.1 修整髋关节 71 5.6.2 修整股骨 72 5.6.3 修整胫骨 73 5.7 为伺服添加范围 73 5.8 步行不易 74 5.9 认识动画类 75 5.9.1 一个伺服数组作为对象 75 5.9.2 一个Servo.Array作为对象 75 5.9.3 一个Servo.Arrays数组作为对象 75 5.10 第一个动画片段 76 5.11 步行 78 5.11.1 行步态 79 5.11.2 走步态 80 5.11.3 跑步态 80 5.12 转弯 81 5.13 命令参考 81 5.14 进一步探索 81 第6章 构建语音控制的NodeBots 83 6.1 材料清单 84 6.2 构建项目 86 6.3 构建一个继电器电路 86 6.4 构建麦克风前置放大器电路 88 6.5 构建命令服务器 90 6.6 使用Web Speech API进行简单的语音控制 92 6.7 整合命令服务器与继电器电路 94 6.8 使用Android可穿戴设备的高级语音控制 95 6.8.1 Android移动应用 96 6.8.2 Android Wear应用 101 6.9 进一步探索 104 第7章 室内日晷 105 7.1 材料清单 105 7.2 开始制作日晷 108 7.3 制作和组装核心结构 108 7.4 连接和设置伺服 109 7.4.1 连接伺服 109 7.4.2 设置伺服 110 7.5 制作底座 111 7.6 制作圆盘 111 7.7 制作底座包围和日晷圆盘支撑 112 7.7.1 制作底座的包围 112 7.7.2 放置圆盘 113 7.7.3 制作日晷圆盘的支撑 114 7.8 完成所有零件的装配 115 7.8.1 制作方位臂 115 7.8.2 制作立面弧 116 7.8.3 切割晷针 117 7.8.4 连接由LED模拟的“太阳” 117 7.9 编写代码并控制日晷 118 7.9.1 理解sundial.js文件的代码 119 7.9.2 在sundial.js中添加配置选项 120 7.9.3 sundial.js的具体细节 120 7.10 组装所有零件 122 7.11 实现目标 123 7.12 进一步探索 123 第8章 万圣节恶搞灯光秀 125 8.1 材料清单 125 8.2 背景 126 8.3 组装LED点阵 127 8.3.1 所需工具 127 8.3.2 准备 128 8.3.3 连接控制器与LED点阵 129 8.3.4 装饰LED 132 8.3.5 疑难解答 133 8.4 控制LED点阵 133 8.4.1 准备Arduino开发板 133 8.4.2 运行测试程序 133 8.4.3 Matrix构造函数选项 133 8.4.4 控制LED点阵显示 134 8.5 开发Web应用程序 134 8.5.1 开发工具 135 8.5.2 使用express-generator 135 8.5.3 开发API 135 8.5.4 添加用户界面 137 8.5.5 扩展应用程序 138 8.6 进一步探索 138 第9章 CheerfulJ5 139 9.1 材料清单 139 9.2 接线电路 140 9.3 CheerfulJ5代码 141 9.3.1 连接到Arduino 141 9.3.2 控制RGB 142 9.3.3 使用Node.js Read-Eval-Print循环 143 9.3.4 定义CheerLights颜色图 143 9.3.5 访问CheerLights ThingSpeak API 144 9.3.6 使用Twitter Streaming API 146 9.4 使用Spark WiFi开发套件实现无线连接 149 9.4.1 将Spark添加到你的电路中 149 9.4.2 使用Spark-io IO插件 150 9.4.3 切换到电池电量 151 9.5 打包 151 9.6 进一步探索 152 第10章 使用BeagleBone Black的交互式RGB LED显示屏 153 10.1 材料清单 154 10.1.1 BeagleBone Black 154 10.1.2 WiFi USB适配器(可选) 154 10.1.3 外部5V电源 (半可选) 154 10.1.4 RGB LED 155 10.1.5 传感器 155 10.1.6 其他 155 10.2 准备:软件 155 10.2.1 LEDScape 155 10.2.2 连接LED 156 10.3 连接RGB LED 156 10.4 使用JavaScript编写代码 158 10.4.1 运行测试脚本 159 10.4.2 添加Johnny-Five / Beaglebone-io 161 10.4.3 添加光敏电阻 163 10.4.4 用加速度计改变颜色 164 10.5 进一步探索 167 第11章 物理安全、JavaScript和你 169 11.1 简易超声波传感器项目:实验控制测试(SUSPECT) 169 11.2 SMS增强超声波传感器应用:一般实验(SAUSAGE) 173 11.3 进入点监控系统(PoEMS) 175 11.4 激光给敌人和战友都留下深刻印象,谢谢 (LIBERTY) 176 11.5 状态指示器、按钮和二极管(SINBaD) 178 11.6 进一步探索! 181 第12章 人工智能:蝙蝠机器人 183 12.1 人工智能的基础知识 183 12.1.1 遥控机器人 184 12.1.2 半自动机器人 184 12.1.3 自主机器人 184 12.1.4 蝙蝠机器人 184 12.2 材料清单 184 12.3 组装 186 12.4 第1步:远程控制 187 12.4.1 移动机器人 187 12.4.2 控制机器人 189 12.4.3 依赖声呐指向和读数 190 12.5 第2步:自治 191 12.6 疑难解答 195 12.7 进一步探索 195 第13章 三角洲机器人和运动学 197 13.1 材料清单 198 13.2 三角洲结构解析 198 13.3 构建Junky Delta 199 13.3.1 让它移动 203 13.3.2 通过运动学可预测的定位 204 13.4 更复杂的三角洲选项 208 13.4.1 酒保机器人 208 13.4.2 机器人军队 209 13.5 进一步探索 209 第14章 喵喵鞋 211 14.1 材料清单 211 14.2 零件说明 212 14.3 制作传感器插件 214 14.3.1 将传感器焊接到接线上 214 14.3.2 将传感器安装到鞋子中 215 14.3.3 将导线穿出鞋子 215 14.4 连接鞋子 215 14.5 将鞋子连接到Arduino 217 14.5.1 准备接线 217 14.5.2 焊接Arduino 217 14.5.3 将Arduino连接到右鞋上 218 14.6 用Johnny-Five运行代码 218 14.6.1 连接到Johnny-Five 218 14.6.2 设置传感器 219 14.6.3 记录传感器输出 219 14.6.4 示例行为 220 14.7 进一步探索 221 附录A 223 ---------------------------JavaScript编程精解(原书第2版)--------------------------- Contents 译者序 赞誉 前言 第一部分 JavaScript编程语言 第1章 值、类型和运算符 2 1.1 值 2 1.2 数字 3 1.3 字符串 5 1.4 一元运算符 6 1.5 布尔值 6 1.6 未定义值 8 1.7 自动类型转换 8 1.8 本章小结 10 第2章 程序结构 11 2.1 表达式和语句 11 2.2 变量 12 2.3 关键字和保留字 13 2.4 环境 14 2.5 函数 14 2.6 console.log函数 14 2.7 返回值 15 2.8 prompt和confirm函数 15 2.9 控制流 16 2.10 条件执行 16 2.11 while和do循环 17 2.12 代码缩进 19 2.13 for循环 19 2.14 跳出循环 20 2.15 更新变量的简便方法 21 2.16 switch条件分支 21 2.17 大写 22 2.18 注释 22 2.19 本章小结 23 2.20 习题 23 第3章 函数 25 3.1 定义函数 25 3.2 参数和作用域 26 3.3 嵌套作用域 27 3.4 函数值 28 3.5 符号声明 29 3.6 调用栈 29 3.7 可选参数 31 3.8 闭包 31 3.9 递归 32 3.10 添加新函数 35 3.11 函数及其副作用 37 3.12 本章小结 37 3.13 习题 38 第4章 数据结构:对象和数组 39 4.1 松鼠人 39 4.2 数据集 40 4.3 属性 41 4.4 方法 41 4.5 对象 42 4.6 可变性 44 4.7 松鼠人的记录 45 4.8 计算关联性 47 4.9 对象映射 48 4.10 分析结果 49 4.11 详解数组 50 4.12 字符串及其属性 51 4.13 arguments对象 52 4.14 Math对象 53 4.15 全局对象 55 4.16 本章小结 55 4.17 习题 55 第5章 高阶函数 58 5.1 抽象 59 5.2 数组遍历抽象 59 5.3 高阶函数 61 5.4 参数传递 62 5.5 JSON 63 5.6 数组过滤 64 5.7 使用map函数转换数组 65 5.8 使用reduce进行数据汇总 65 5.9 可组合性 66 5.10 性能开销 67 5.11 曾曾曾曾……祖父 67 5.12 绑定 70 5.13 本章小结 70 5.14 习题 71 第6章 深入理解对象 72 6.1 历史 72 6.2 方法 73 6.3 原型 74 6.4 构造函数 75 6.5 覆盖继承的属性 76 6.6 原型污染 77 6.7 无原型对象 79 6.8 多态 79 6.9 绘制表格 80 6.10 Getter与Setter 84 6.11 继承 85 6.12 instanceof运算符 87 6.13 本章小结 87 6.14 习题 88 第7章 项目实战:构建电子生态 系统 89 7.1 定义 89 7.2 描述世界 90 7.3 动物的编程接口 91 7.4 World对象 93 7.5 this及其作用域 94 7.6 赋予生命 96 7.7 动物的爬行动作 98 7.8 更多动物 98 7.9 更逼真的生态系统仿真 99 7.10 动作处理器 100 7.11 充实这个新世界 102 7.12 让虚拟世界生机盎然 103 7.13 习题 104 第8章 处理缺陷与错误 105 8.1 开发人员造成的问题 105 8.2 严格模式 106 8.3 测试 107 8.4 调试 108 8.5 错误传播 109 8.6 异常 110 8.7 异常后清理 111 8.8 选择性捕获 112 8.9 断言 114 8.10 本章小结 115 8.11 习题 115 第9章 正则表达式 116 9.1 创建正则表达式 116 9.2 匹配测试 117 9.3 匹配字符集 117 9.4 部分模式重复 118 9.5 子表达式分组 119 9.6 匹配和分组 119 9.7 日期类型 120 9.8 单词和字符串边界 121 9.9 选项模式 122 9.10 匹配原理 122 9.11 回溯 123 9.12 replace方法 125 9.13 贪婪模式 126 9.14 动态创建RegExp对象 127 9.15 search方法 128 9.16 lastIndex属性 128 9.17 解析INI文件 129 9.18 国际化字符 131 9.19 本章小结 131 9.20 习题 132 第10章 模块 134 10.1 模块的好处 134 10.2 使用函数作为命名空间 136 10.3 使用对象作为接口 137 10.4 与全局作用域分离 138 10.5 将数据作为代码执行 138 10.6 require函数 139 10.7 模块加载过慢的问题 140 10.8 接口设计 143 10.9 本章小结 144 10.10 习题 145 第11章 项目实战:开发编程语言 147 11.1 解析 147 11.2 代码执行器 150 11.3 特殊形式 151 11.4 环境 153 11.5 函数 154 11.6 编译 155 11.7 站在别人的肩膀上 155 11.8 习题 156 第二部分 在浏览器中使用JavaScript 第12章 浏览器中的JavaScript 160 12.1 网络和Internet 160 12.2 Web 161 12.3 HTML 162 12.4 HTML和JavaScript 164 12.5 沙箱 164 12.6 兼容性与浏览器之争 165 第13章 文档对象模型 166 13.1 文档结构 166 13.2 树 167 13.3 标准 168 13.4 通过树结构访问节点 169 13.5 查找元素 170 13.6 修改文档 170 13.7 创建节点 171 13.8 属性 173 13.9 布局 175 13.10 样式 176 13.11 层叠样式 177 13.12 查询选择器 178 13.13 位置与动画 179 13.14 本章小结 181 13.15 习题 181 第14章 处理事件 183 14.1 事件处理器 183 14.2 事件与DOM节点 184 14.3 事件对象 184 14.4 传播 185 14.5 默认动作 186 14.6 按键事件 187 14.7 鼠标点击 188 14.8 鼠标移动 189 14.9 滚动事件 191 14.10 焦点事件 192 14.11 加载事件 192 14.12 脚本执行时间线 193 14.13 设置定时器 193 14.14 降频 194 14.15 本章小结 195 14.16 习题 196 第15章 项目实战:平台游戏 198 15.1 游戏 198 15.2 实现技术 199 15.3 关卡 199 15.4 读取关卡 200 15.5 活动元素 201 15.6 当封装成为负担 203 15.7 绘图 204 15.8 动作与冲突 208 15.9 活动元素与动作 209 15.10 跟踪按键 213 15.11 运行游戏 213 15.12 习题 215 第16章 使用canvas绘图 217 16.1 SVG 217 16.2 canvas元素 218 16.3 填充与描边 219 16.4 路径 220 16.5 曲线 221 16.6 绘制饼状图 224 16.7 文本 225 16.8 图像 225 16.9 变换 227 16.10 存储与清除图像的变换状态 228 16.11 回到游戏 230 16.12 选择图像接口 234 16.13 本章小结 235 16.14 习题 235 第17章 HTTP协议概述 237 17.1 协议简介 237 17.2 浏览器和HTTP 238 17.3 XMLHttpRequest 240 17.4 发送请求 240 17.5 异步请求 241 17.6 获取XML数据 242 17.7 HTTP沙箱 242 17.8 抽象请求 243 17.9 Promise 245 17.10 运用HTTP 247 17.11 安全和HTTPS 247 17.12 本章小结 248 17.13 习题 248 第18章 表单和表单域 250 18.1 域 250 18.2 聚焦 252 18.3 禁用域 252 18.4 作为整体的表单 253 18.5 文本域 254 18.6 选择框和单选框 255 18.7 选择域 256 18.8 文件域 257 18.9 客户端保存数据 259 18.10 本章小结 261 18.11 习题 261 第19章 项目实战:绘图程序 263 19.1 实现 263 19.2 建立DOM 264 19.3 基础 265 19.4 工具选择 265 19.5 颜色和画刷大小 267 19.6 保存 269 19.7 加载图片文件 270 19.8 完成 271 19.9 习题 272 第三部分 高级主题 第20章 Node.js 276 20.1 背景 276 20.2 异步性 277 20.3 node命令 278 20.4 模块 278 20.5 使用NPM安装 279 20.6 文件系统模块 281 20.7 HTTP模块 282 20.8 流 283 20.9 简单的文件服务器 284 20.10 错误处理 288 20.11 本章小结 290 20.12 习题 290 第21章 项目实战:技能分享网站 293 21.1 设计 293 21.2 长轮询 294 21.3 HTTP接口 295 21.4 服务器 297 21.5 客户端 303 21.6 习题 309 第22章 JavaScript和性能 311 22.1 分阶段编译 311 22.2 图形布局 312 22.3 定义图 313 22.4 第一个力导向布局函数 314 22.5 性能分析 316 22.6 函数内联 317 22.7 退化回旧式循环 318 22.8 避免工作 319 22.9 产生更少的垃圾 319 22.10 垃圾回收 320 22.11 修改对象 321 22.12 动态类型 322 22.13 本章小结 323 22.14 习题 324 |