所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
挑战二+【模拟】声控开关?无极调光?没你想的那么复杂啦~
Jacken Jacken 2019-01-29 09:36:03
1
0
简单
随着技术的发展,声控开关可谓是已经进入了千家万户了,无极调光灯技术也是这两年比较火的东西。前阵子刚好买了个无极调光的床头灯,捣鼓了一阵子,发现其实这货实现原理还是挺简单的~~这次Mind+挑战赛我有幸入围第二轮,遂选了A套件(Microbit主板、+扩展板+角度传感器+声音传感器),想着来简单模拟下无极调光的原理。

在这之前,先说说我结合网上资料对于无极调光技术的简介(作品中也有):无极调光技术其原理主要是通过旋钮开关控制其电流通过的大小,实现灯泡亮度的变化,因为节能灯灯泡在低电流状态下会出现严重的闪烁问题,所以目前无极调光的灯泡多为LED灯珠或类似早期钨丝灯泡的那种,现有的无极调光灯主要有单色调光和多色调光(双色、三色等),这里主要展示模拟单色调光的实现效果。

话不多说~~咱们开始吧!

材料清单 材料清单
1x
Micro:bit主控板
1x
Micro:bit Boson扩展板
1x
声音传感器
1x
角度传感器
1x
Micro USB数据线
2x
传感器连接线

*备注:上面清单中的传感器,我实际用的是micro:bit造物粒子入门套件中的模块化的声音和角度传感器,上面提供的连接是单独的,兼容Arduino的传感器,功能是完全一样的,没有任何功能上的区别,就是连接线可能会有点区别而已。

步骤1 步骤1
布置舞台

Tips:要记得先把Mind+模式切换回“实时模式”哦!!!(点击Mind+右上角的“实时模式”即可)

在这里我们需要建立至少1个角色(充当白天黑夜的全黑图片),我这里为了增加互动友好性,还增加了可爱的mind+小角色和一个作为原理展示提示和介绍的“古波”角色。

另外,还需要添加一张背景图。这里我就直接选用软件背景库中的室内卧室背景啦!

下图就是角色内容和舞台布置效果。

projectImage
步骤2 步骤2
添加Microbit扩展,传感器接线

接着咱们就添加Microbit扩展,将声音传感器(下称声音模块)和角度传感器(下称旋钮模块)接上扩展板并与Microbit主板连接。

首先,咱们先接线,我将声音模块接到扩展板的P0接口,将旋钮模块接到扩展板的P1接口,然后将扩展板和Microbit主板连接,并且接上数据线连到电脑

projectImage

然后,点击Mind+软件左下角的“扩展”,接着选择“主控板”下的Microbit,然后点击返回,以此添加Microbit相关的指令积木。

projectImage
步骤3 步骤3
连接Microbit

以上做好后,可以先测试下连接Microbit了,点击Mind+菜单栏的“连接”设备,在下拉菜单中选择你的Microbit设备点击连接,这里我的端口是COM3,你的不一定是COM3,有可能是COM1也有可能是COM2,所以要根据你实际的情况去选择(正常来说,不同时接多个主控板,是不会选错的!)。连接成功后,在Mind+右侧舞台上方会有“连接设备成功”的字样显示。如下图:

Tips:如果这里没有显示你的Microbit设备,请检查线路有没有接好,或者尝试点击“连接设备”菜单中的“一键安装串口驱动”,安装串口驱动后再重新插拔数据线试试。

projectImage
projectImage
步骤4 步骤4
给角色“Mind+”撸脚本

在这里,角色“Mind+”主要功能有两个,一是做操作提示,增加交互友好度;二是对按钮按压、声音模块感应和灯的“开关”状态进行侦测和控制,所以脚本有三段:

projectImage

↑↑这是“Mind+”角色第一段脚本,首先将角色移到顶层可以防止角色被“黑色‘布’”角色遮住(你也可以用其他方式实现这个效果),然后循环执行,根据变量“开关”的状态不同,在Microbit的点阵上显示不同的图案,以此可以直接通过Microbit的点阵图案就能直接判断灯的开关状态。

projectImage

↑↑这是“Mind+”角色第二段脚本,主要是根据当前灯的亮度值进行相应的文字提示(这也是为了增加交互友好度而做的)

projectImage

↑↑这是“Mind+”角色第三段脚本,这段脚本主要功能就是检测Microbit上按钮“A”和P0引脚中声音模块的状态,并根据它们的状态去控制变量“开关状态”的值。脚本中我对部分指令做了相应的注释,这边就不多做解释啦!

通过以上脚本,我们可以通过Microbit上的按钮“A”来开关灯,也可以通过声音控制来开关灯。这个的原理和我们生活中的触摸开关+声控/红外感应组合开关是极其类似的。通过这里我们也就可以了解到触摸开关如何实现单键控制开和关的了,也能了解到声控开关的简单实现原理了!

步骤5 步骤5
为角色“黑色‘布’”撸脚本

这个角色的脚本就超简单啦~~就是根据引脚P1上的旋钮模块的值来控制其“虚像”特效的变化,虚像特效就是我们所说的透明度,当虚像特效为0时,角色为不透明状态;虚像特效为100时,角色为全透明状态。关于脚本中的一些指令,我也做了相应注释了~so...不解释啦!

通过这里,我们就能通过此模拟控制电流输出大小实现灯光亮度变化的效果,以此了解无极调光技术的简单实现原理啦!

projectImage
步骤6 步骤6
为可爱的“古波”角色撸脚本

这个角色的作用就是——科普说明~~~

毕竟作品的目的是为了介绍声控开关和无极调光技术的,所以加点科普内容进去也能增加友好度啦!

projectImage
步骤7 步骤7
开始秀(玩)起来吧!

前面已经接入Microbit,也已经连接到Mind+了~~所以点击小绿旗,就可以开始操作模拟效果啦!!

步骤8 步骤8
项目地址&演示视频

1、作品的SB3文档可以点击此处下载

2、下面是演示视频:

后记·题外话

1、这里还能添加彩色灯带模块,然后从扩展的“显示器”里加入“WS2812 RGB灯”扩展,只需要添加少量脚本,就能实现控制LED灯带了~~当然,也可以直接控制其他LED灯模块的(不过~这个不在本次比赛的用料范围内)~~~so...这个就留给各位探索啦!

2、在作品中的无极调光这里原本是要实现开灯后设置默认亮度为50%的,然后旋转旋钮模块可以实现亮度的增加/减少变化,但是有一个问题涵待解决——旋钮模块的当前角度(值),即假设开灯前旋钮模块的角度(值)为1的话,开灯后,默认亮度为50%,此时如果将旋钮模块向右转动增加角度(值)时,灯的当前亮度会从50%快速跳到旋钮模块当前的角度(值)。(eg:当前旋钮模块值转动后为20,那么灯亮度会快速从50%调整为20%,这样就没有实现无极增加/减小亮度了)……这个问题我还在设法解决中,同时也期待各路大侠的指导!

3、不知是Mind+的原因还是Scratch3.0的原因,我在添加扩展之前先写了部分脚本,然后再中途操作添加Microbit主控板后,一大部分的脚本竟然自动被删掉了~~被删掉了~~还无法撤回!!!!!!

所以这边提醒各位,养成良好习惯,添加扩展之前一定要记得先保存项目!!!

同时,也期待这个bug能早点得到解决!!

Makelog作者原创文章,未经授权禁止转载。
1
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]