
作者:[印]马尔万·阿萨巴赫著张颖译
页数:350
出版社:清华大学出版社
出版日期:2020
ISBN:9787302557678
电子书格式:pdf/epub/txt
内容简介
书详细阐述了与MicroPython相关的基本解决方案,主要包括MicroPython简介、控制LED、创建声音和音乐、按钮操作、读取传感器数据、Button Bash游戏、Fruity Tunes、运动装置、在micro:bit上进行编码、控制ESP8266、文件系统的交互操作、网络机制、Adafruit FeatherWing OLED交互操作、物联网气象仪、在Adafruit HalloWing Microcontroller上编码等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
本书特色
MicroPython是Python 3编程语言的精简实现,能够在各种微控制器上运行。MicroPython提供了Python编程语言中的主要特性,如基于微处理器的函数、类、列表、字典、字符串、文件的读写操作、列表推导和异常处理等。
目录
第1章 MicroPython简介 1
1.1 MicroPython 1
1.2 微控制器 2
1.3 CircuitPython 2
1.4 Circuit Playground Express 3
1.5 购买方式 3
1.6 更多内容 4
1.7 刷新微控制器固件 4
1.8 执行第一个程序 7
1.9 使用screen访问REPL 8
1.10 使用Mu访问REPL 10
1.11 在REPL中执行命令 12
1.12 使用自动重载特性 13
1.13 更新CircuitPython库 15
第2章 控制LED 17
2.1 Adafruit Circuit Playground Express布局 17
2.2 打开Pin 13 LED 18
2.3 设置NeoPixel的亮度 19
2.4 控制单一NeoPixel的颜色 21
2.5 使用RGB和十六进制码显示LED颜色 24
2.6 利用颜色名称设置LED颜色 26
2.7 将所有NeoPixel设置为相同颜色 28
2.8 将某一范围内的NeoPixel设置为一种颜色 30
2.9 生成随机NeoPixel LED颜色 31
2.10 利用随机颜色生成LED动画 32
2.11 利用彩虹色生成LED动画 35
第3章 创建声音和音乐 39
3.1 Adafruit Circuit Playground Express布局 39
3.2 发出蜂鸣音 40
3.3 控制音调、频率和播放时长 42
3.4 播放音符 43
3.5 播放旋律 45
3.6 发出警报音 47
3.7 播放WAV文件 49
3.8 将MP3文件转换为WAV文件 50
3.9 开始和结束音调 53
第4章 按钮操作 57
4.1 Adafruit Circuit Playground Express布局 57
4.2 检测push按钮的按压状态 59
4.3 利用push按钮控制LED 60
4.4 读取滑动开关 62
4.5 按钮状态变化时调用函数 64
4.6 利用push按钮移动LED 66
4.7 按下按钮播放蜂鸣音 68
4.8 检测触控板上的触摸行为 70
4.9 监控触控板原始测量数据 71
4.10 调整触控阈值 74
第5章 读取传感器数据 77
5.1 Circuit Playground Express传感器 77
5.2 读取温度数据 78
5.3 从光传感器中读取亮度级别 81
5.4 创建测光计 83
5.5 从运动传感器中读取数据 85
5.6 检测单击或双击操作 87
5.7 检测摇动行为 89
5.8 摇动后产生蜂鸣音 90
第6章 Button Bash游戏 93
6.1 技术需求 93
6.2 Circuit Playground Express电源 94
6.3 定义一个类并检测按钮状态的变化 96
6.4 创建自己的Python模块 99
6.5 向事件循环中添加按钮交互行为 101
6.6 创建生成器获取像素颜色 103
6.7 利用ScoreBoard类显示分值 106
6.8 利用ScoreBoard类检测获胜者 108
6.9 向事件循环中添加ScoreBoard类 110
第7章 Fruity Tunes 113
7.1 技术需求 113
7.2 Circuit Playground Express触控板 113
7.3 定义类并响应于触摸事件 116
7.4 定义函数并启用扬声器输出 120
7.5 定义函数播放音频文件 121
7.6 使用NeoPixel对象控制像素 124
7.7 创建触控处理程序播放声音 126
7.8 创建触控处理程序点亮像素 129
7.9 创建事件循环处理全部触摸事件 133
第8章 运动装置 141
8.1 技术需求 141
8.2 直流电机 142
8.3 伺服装置 142
8.4 Adafruit CRICKIT 143
8.5 将伺服系统调整至正确的脉冲宽度 146
8.6 设置伺服系统的动作范围 148
8.7 设置伺服系统的角度 151
8.8 伺服系统的扫掠运动 154
8.9 利用按钮控制伺服系统 158
8.10 控制多个伺服系统 161
8.11 开启直流电机 165
8.12 设置直流电机的速度和方向 167
8.13 利用按钮控制直流电机 170
第9章 在micro:bit上进行编码 175
9.1 技术需求 175
9.2 micro:bit 175
9.3 使用Mu刷新micro:bit上的代码 176
9.4 使用Mu获取micro:bit上的REPL 178
9.5 在LED上显示单一字符 180
9.6 显示内建图像 182
9.7 显示滚动文本 184
9.8 显示按下的按钮 186
9.9 创建倒数计时器 188
第10章 控制ESP8266 191
10.1 技术需求 191
10.2 Adafruit Feather HUZZAH ESP8266 191
10.3 在串行连接上使用REPL 193
10.4 扫描可用的Wi-Fi网络 195
10.5 配置AP模式 197
10.6 连接至现有的Wi-Fi网络中 199
10.7 使用基于Wi-Fi的WebREPL 202
10.8 利用WebREPL CLI传输文件 206
10.9 控制蓝色和红色LED 208
第11章 文件系统的交互操作 211
11.1 技术需求 211
11.2 重载文件系统 211
11.3 列出文件 214
11.4 移除文件 216
11.5 创建目录 219
11.6 读取文件内容 221
11.7 写入文件内容 223
11.8 计算磁盘使用空间 226
第12章 网络机制 231
12.1 技术需求 231
12.2 执行DNS查找 231
12.3 定义一个函数等待互联网连接 234
12.4 利用原始Socket执行HTTP请求 237
12.5 利用urequests库执行HTTP请求 241
12.6 从RESTful Web服务中获取JSON数据 244
12.7 创建HTTP服务器 247
12.8 创建Web处理程序模块 252
12.9 通过Web服务器控制LED 257
12.10 开发RESTful API以控制LED 261
第13章 Adafruit FeatherWing OLED交互操作 267
13.1 Adafruit FeatherWing OLED 267
13.2 技术需求 268
13.3 利用GPIO引脚检测按钮的按击状态 268
13.4 连接至SSD1306显示设备上 272
13.5 填充和清除显示设备 274
13.6 设置显示设备上的像素 277
13.7 在显示设备上绘制直线和矩形 281
13.8 在显示设备上绘制文本 286
13.9 反转显示设备上的颜色 290
第14章 物联网气象仪 295
14.1 技术需求 295
14.2 从互联网中检索天气数据 296
14.3 定义一个函数以获取某个城市的天气信息 299
14.4 随机选择城市 303
14.5 创建Screen对象用于文本处理 305
14.6 定义一个函数以显示城市的天气信息 309
14.7 获取数据时提供可视化反馈结果 314
14.8 定义一个函数并针对随机城市显示天气信息 319
14.9 创建物联网按钮以显示世界天气信息 322
第15章 在Adafruit HalloWing Microcontroller上编码 329
15.1 Adafruit HalloWing M0 Express 329
15.2 技术需求 330
15.3 发现I2C设备 330
15.4 利用I2C从加速计中读取数据 332
15.5 利用加速计检测开发板的翻转操作 335
15.6 控制屏幕亮度 337
15.7 显示位图图像 340
15.8 列出全部图像文件 343
15.9 创建谜语-应答器 347
节选
第2章 控制LED 本章将介绍Adafruit Circuit Playground Express中NeoPixel LED的控制方法。在相关案例中,我们将考查设置像素颜色的各种方法,且每种方法都包含了自身的权衡方案。 除此之外,本章还将展示与时间相关的操作,以便创建淡入淡出效果和其他光影动画效果。NeoPixel支持丰富的视觉交互效果,本章案例对此提供了必要的构造模块,进而将此类视觉概念引入开发项目中。 本章主要涉及以下主题。 q 打开Pin 13 LED。 q 设置NeoPixel的亮度。 q 控制单一NeoPixel的颜色。 q 使用RGB和十六进制码显示LED颜色。 q 利用颜色名称设置LED颜色。 q 将所有NeoPixel设置为相同颜色。 q 将某一范围内的NeoPixel设置为一种颜色。 q 生成随机NeoPixel LED颜色。 q 利用随机颜色生成LED动画。 q 利用彩虹色生成LED动画。 2.1 Adafruit Circuit Playground Express布局 图2.1显示了LED的具体位置。 Pin 13 LED是一个简单的红色LED,将用于2.2节案例中。另外,开发板上配置了10个NeoPixel,每一个NeoPixel由红、绿、蓝LED构成。通过控制每个LED的亮度,可将NeoPixel设置为某种特定的颜色。 图2.1 2.2 打开Pin 13 LED 本节案例将学习如何打开和关闭Pin 13 LED。Pin 13 LED是开发板上最简单的LED,且仅包含一种颜色,在Python中与其进行交互同样十分直观。综上所述,Pin 13 LED可视为学习过程中一个较好的起点。 2.2.1 准备工作 本节案例需要访问Circuit Playground Express上的REPL,进而运行案例中的相关代码。 2.2.2 实现方式 具体实现方式如下。 (1)在REPL中运行下列代码。 >>> from adafruit_circuitplayground.express import cpx >>> cpx.red_led = True (2)此时,Pin 13 LED呈现红色。 (3)利用下列代码检查LED的当前状态。 >>> cpx.red_led True (4)关闭LED并在REPL中运行下列代码。 >>> cpx.red_led = False (5)当前,Pin 13 LED处于关闭状态。 2.2.3 工作方式 第一行代码将导入Circuit Playground Express库,该库包含了名为express的对象类,这也是所用的主类,进而与开发板上的硬件进行交互。在导入Circuit Playground Express库后,将生成名为cpx的类实例。 cpx对象公开了名为red_led的属性,该属性可用于检索LED的当前状态。如果LED处于开启状态,则返回True值;否则,返回False值。根据True或False值,设置该属性值将开启或关闭LED。 2.2.4 更多内容 Pin 13 LED是最简单的板载LED灯,并通过True或False设置值。用户无法控制LED的颜色或亮度。本书中的其他案例将对板载NeoPixel灯加以控制,其间将涉及更为丰富的功能,但也需要相对复杂的API对其进行控制。 2.2.5 另请参阅 下面列出了一些有用的参考资源。 q red_led文档:https://circuitpython.readthedocs.io/projects/circuitplayground/en/ latest/api.html#adafruit_circuitplayground.express.Express.red_led。 q cpx变量导入:https://circuitpython.readthedocs.io/projects/circuitplayground/en/ latest/#usage-example。 2.3 设置NeoPixel的亮度 本节案例将控制像素的亮度,这一点十分重要(取决于项目的具体需求)。需要注意的是,亮度应调整至应有的级别,以使像素清晰可见且处于适宜状态。 2.3.1 准备工作 当前案例需要访问Circuit Playground Express上的REPL,进而运行案例中的相关代码。 2.3.2 实现方式 具体实现方式如下。 (1)在REPL中运行下列代码。 >>> from adafruit_circuitplayground.express import cpx >>> cpx.pixels.brightness = 1.0 >>> cpx.pixels[0] = (255, 0, 0) (2)此时,第一个像素应呈现全亮度红色。运行下列代码将亮度级别调整至50%。 >>> cpx.pixels.brightness = 0.5 (3)亮度级别还可进一步降至10%,并处于相对适宜的可见状态。对此,可运行下列代码。 >>> cpx.pixels.brightness = 0.10 2.3.3 工作方式 brightness属性接收0~1.0的值,表示最小亮度和最大亮度。需要注意的是,板载NeoPixel的亮度可能较高,在最大亮度级别时,应避免对其进行直视以防止对眼睛造成伤害。 此处,建议将亮度级别设置为 10%,进而在适宜状态下查看像素。取决于项目的具体需求条件,还可进一步调整亮度。 有时,像素可能会位于一层塑料薄膜下方,并希望增加其亮度;但是,当直视像素时,还可能希望降低其亮度。 2.3.4 更多内容 亮度级别的实现方式意味着需要一次性地调整所有的NeoPixel。也就是说,根据亮度属性,无法使像素的明暗程度有所区别。因此,亮度的设置将作用于全部板载像素。 注意,像素处于最大级别(即100%亮度)时将会十分耀眼。例如,可将设备置入某个塑料容器中,如图2.2所示。其中,Circuit Playground Express板被放置在一个雪花玻璃球的底部。 图2.2 在该项目中,底座由白色塑料制成。因此,即使板材无法直接可见,但像素亮度仍可通过白色塑料填满整个球体。















