16163| 0
|
[M10教程] 【行空板图形化Python入门教程】第06课:实景星空 |
本帖最后由 Doughnut 于 2022-10-28 14:06 编辑 第06课 实景星空 夜幕降临,华灯初上,在城市中的你有多久没有看到过璀璨的星空了。其实,你看不到星星是因为人类越来越丰富的夜生活导致夜晚环境非常亮,而环境越亮就越看不到星星。本节课我们就使用行空板模拟一个星空,根据环境的亮度,控制星空的出现。 任务目标 根据环境的亮度情况,模拟显示星空。环境亮,看不到星星;环境暗,看到星星不断闪烁。 知识点 1. 强化变量的运用 2. 认识程序中的双分支条件语句 3. 理解三原色混色原理 4. 掌握行空板光线传感器的使用方法 材料清单 1. 硬件清单 行空板x1 Type-C&Micro二合一USB线x1 2. 软件使用 Mind+编程软件x1,下载地址:https://www.mindplus.cc 动手实践 实景星空的实现需要先获取环境亮度,然后根据亮度控制星星闪烁,接下来我们就分两个任务来完成实景星空的制作吧。 任务一:获取并显示环境光强度 在此任务中,我们将学习获取环境亮度和数字转字符串方法,完成环境亮度在行空板屏幕的显示。 任务二:设置星星闪烁 在此任务中,我们将学习使用三原色调色方法,并进一步应用变量,实现由环境亮度控制星星的闪烁。 任务一:获取并显示环境光强度 1. 硬件搭建 使用USB连接线将行空板连接到计算机。 2. 软件准备 打开Mind+,按照下面图示完成软件准备过程。 3. 编写程序 首先我们要使用到行空板自带的光线传感器获取环境光强度,获取指令为 读取环境光强度 ,你可以在指令区“行空板”分类下的“板载传感器”里寻找该指令。 拖出 读取环境光强度 指令直接放入显示文字指令。 为了方便理解显示数值的含义,可以给环境光强度数值增加一个说明,如显示“环境光线强度:233”,现在只需要适当调整文字位置即可。 为了实时获取环境光线强度数值,别忘了在 循环执行 里不断更新显示文字对象内容。 参考完整代码如下: 4. 程序运行 点击运行,并尝试用手指捂住光线传感器位置,观察行空板屏幕显示环境光线强度数值(如下图)。 捂住光线传感器,环境暗,光线强度较低; 不捂住光线传感器,环境亮,光线强度较高。 注意:关于光线传感器的介绍,参见“知识园地”。 任务二:设置星星闪烁 1. 编写程序 任务一已经完成了环境光强度的获取和显示,接下来我们就从星星亮起到星星闪烁,再到由环境亮度控制星星,逐步实现实景星空的模拟。 (1) 让星星亮起来 星星亮起是利用镂空图片透过不同的颜色实现的,所以项目中需要显示可以占满屏幕的白色实心矩形、镂空图片以及文字,图层关系如下: 接下来根据图层情况依次在行空板上显示内容即可,图片素材依然在“第六课 图片素材”文件夹中,别忘了调整图片大小。 (2) 星星闪烁 星星的闪烁,是星星逐渐亮起又变暗的过程,接下来我们就看看是如何实现的吧。 a)改变星星亮度 星星的亮度变化是通过最底层实心矩形的颜色在黑色和白色间逐渐变化的。 如何改变星星亮度呢?有两种方法: 方法一: 使用 更新对象名 的颜色为蓝 指令,让底层实心矩形的颜色多次变化,但是它可选的颜色有限,无法让星星亮度连续变化。 方法二: 使用“三原色调色”指令去改变矩形“对象bg”的颜色。你可以通过“红”关键字找到 更新对象名的颜色红255绿255蓝255 指令。 注意:三原色混色知识,参见“知识园地”。 “三原色调色”指令可以通过数字的连续变化控制颜色从黑色到灰色再到白色均匀变化。下图展示了指令设置和对应的颜色变化。 b)实现星星闪烁 星星的闪烁,我们可以利用“控制”分类下的 重复执行几次 控制 亮度变量 的多次变化,进而完成最底层实心矩形颜色的连续变化。首先将 亮度变量 设为0,然后让变量每次增加51,并通过变量控制颜色从黑向灰色过度,增加5次直到 亮度变量 变为255,颜色即显示为白色,每次变化的时候可以设置等待时间,让颜色变化慢一点,实现参考代码如下: (3) 用环境亮度控制星星闪烁 项目中,环境亮不显示星星,环境暗星星闪烁。这里需要根据当前环境光强度去做判断,在任务一中我们已经知道环境越亮,环境光强度数值越大。 也就是说 如果 环境光强度数值大于某数值,那么 不显示星星,即底层矩形显示黑色, 否则 星星闪烁。 找到“控制”分类下的 如果那么否则 ,根据刚才的描述来完成代码。 注意: 如果那么否则 指令的详细介绍,参见“知识园地”。 (4) 完整代码 为了保证行空板可以实时根据环境光强控制星星闪烁,需要将刚才实现的代码放进 循环执行 里, 完整项目代码参考下图: 2. 程序运行 检查行空板连接情况,点击运行,观察行空板显示效果(如下图)。 知识园地 1. 双分支条件语句 双分支语句指的是 如果那么否则 语句,是条件判断语句中的一个,它的执行过程是,判断条件是否成立,如果成立就执行“那么”后面的语句,否则就执行“否则”后面的语句,它的代码执行流程可以被描述成下面右边的图片。 2. 三原色调色原理 三原色指色彩中不能再分解的三种基本颜色,本节课我们使用的三原色是光的三原色,即红、绿、蓝,简称RGB,通过这三种颜色的混合你可以得到不同的颜色。 在三原色指令中,红绿蓝三个颜色都可以使用数值去调整,不同数值混合出的颜色也不相同,调色的时候你可以根据需要,调整红绿蓝数值获得想要的颜色。 需要说明的是,这三个颜色数值的有效变化范围是0-255。这里的数值表示的是每种颜色的亮暗程度,以红色为例,0表示最暗的红即黑色,而255则表示正红色。 比较特殊的混色是白色,白色是由红绿蓝三个颜色值都为255混合而成,本节课项目中黑色到灰色再到到白色的过度,红绿蓝三个颜色需要同步从0到255变化。 3. 行空板板载光线传感器 当行空板屏幕正对你的时候,光线传感器位于上方右侧。它是由PT0603光敏三极管构成,你可以使用 读取环境光强度 指令来获得当前环境的光线强度。 环境光强度是一个连续变化的数值,数值小表示当前环境暗;数值大则表示,当前环境亮。 另外,需要特别说明的是,如果代码中用到了行空板板载传感器,如光线传感器,当行空板断开时运行代码,程序会报错,Python运行弹窗不会出现。 此时,若你需要在电脑屏幕展示项目效果,你可以使用“远程桌面连接”工具,通过行空板IP,将行空板屏幕显示在电脑上。 详细操作方法介绍,可以进入行空板官网的“vnc屏幕共享”页面查看。 地址:https://wiki.unihiker.com/vnc 4. 指令学习 本项目主要使用了光线传感器、三原色调色等指令,接下来我们就详细学习一下它们。 该指令用于获取光线传感器的数值。 该指令用于修改指定形状、文字对象的颜色。使用时,需写明要修改的对象名称和红绿蓝三个颜色的数值,有效数值范围是0-255。 该指令用于将两个数相加。 该指令用于将某段代码重复执行指定次数。属于循环结构中的指令。 挑战自我 漆黑的房间里有一只黑色的小猫,你能找到它在哪里吗?请你结合本节课知识,以图片素材中的“隐藏黑猫图片”为背景,设计一个“寻找黑猫”的小游戏。 提示: 1. 利用光线传感器来控制行空板屏幕亮度,若环境亮,行空板屏幕暗,你只能看到一双猫的眼睛; 2. 环境暗或用手指捂住光线传感器,屏幕亮起,房间里的黑猫立马就显示出来了。 附件下载 第六课 实景星空.zip |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed