【导语】
前不久,小喵在出差住酒店时,偶遇了一种新颖的门锁设计。这种门锁不仅支持传统的密码解锁方式,更引入了指纹识别技术,能够精准验证是否为房间顾客。 如此设计,不仅巧妙地解决了房卡易丢失的困扰,同时也为我们的住宿体验增添了一份便捷与安全。
基于此,小喵在仿真环境中模拟了这种智能门锁的开门过程,由于指纹识别不好操作,就换成小喵AI的人脸识别进行开门! 那么具体要如何编写此次的程序呢,下面就让我们来解开这种智能门锁的神秘面纱吧!
【编程软件使用】
Kittenblock1.89 网页版(目前只支持网页版)
【功能概述】
智能门锁的开门方式有两种,只要有一种符合要求,就可以成功把门打开,这就是智能门锁的基本控制逻辑,使用了逻辑运算中的或运算进行控制。
关于软件的操作逻辑和实现的大致方法如下:
【前期准备】
素材准备:
由于不涉及硬件部分,我们需要准备三张图片以及门锁素材上可以交互的素材,提升后续的程序体验~ 可以看到包含0-9的数字,摄像头以及门把锁,这些在程序中都是可以被点击进行交互的。
制作好之后把开门和关门的素材放在背景中,门锁素材和可交互素材作为角色上传到软件中。 由于角色数量比较多,我们可以先把一部分可交互的素材在舞台上进行隐藏,并对素材适当命名,这些素材的作用后面讲解程序的时候会介绍。
人脸图片和小喵AI训练:
这里我们先使用网页版(离线版暂时没上线)打开机器学习可视化插件。
将插件添加后发现没有任何编程积木,这是因为我们需要先训练模型. 可以看到目前支持【图像分类】、【姿态分类】、【音频分类】,我们的目标是让“门锁”学习人脸,所以选择进行图像分类。
点击进入后可以开始进行图像的训练,界面的使用方法如下:
训练时需要提前准备两张人脸图片,一张为房屋主人,另一张为陌生人,这里我用AI帮我画了两张。 在训练时还需要额外添加没有人的背景素材,上传素材的过程小喵这里就省略了,训练后可以看到检测效果不错,这个时候就可以使用模型进行编程了。 具体训练方法请点击链接:
点击使用模型后可以看到出现了一些编程积木,具体积木的用法可以在程序编写环节中查看。到此所有前期的准备已完成。
【程序编写】
【素材初始化】
背景:
程序使用空格键开始,选中背景角色,当按下空格键时切换为关门背景。
门把手:
根据前两个板块的介绍,我们需要点击门锁才会进入到解锁的阶段。 具体的实现方法是把门锁作为素材单独作为角色并检测是否被鼠标点击。 在【准备阶段】我们把所有的角色都隐藏了起来,现在需要把它显示一下,大小调整为40,可以看到如下的效果。
很明显这个位置是不对的,需要对齐进行调整,使其能够和关门背景完全重合,调整到如下的位置效果就非常好啦,几乎看不出来粘合的痕迹!
完成后记录该位置坐标和大小以免编辑时不小心移动素材,我们需要对该素材进行初始化的位置确定,按下空格键后回到初始位置并显示。
门锁:
根据前面展示的流程图可知,我们首先点击门把手进入开锁阶段,然后点击门锁上的数字进行输入密码。 由于这个是门锁的局部放大照片,在进入开锁阶段前这个素材一开始需要隐藏,并在其位置下设置好变量的值,其中初始密码我这里简单的设置为123456。
注意,这里的输入密码初始值为空的字符类型变量,这里用空的连接积木来表示。
其余素材:
而对于余下的12个素材是作为“门锁”素材的“零部件”,通过鼠标点击的方式进行交互。 例如下面动图中的数字0按钮,需要缩放并移动它才能使素材与门锁上的0对齐,其余的素材也是如此。 所以在初始化时需要先隐藏并找好对齐“门锁”素材的位置使其能够被准确的点击到。 这些素材的初始化后的效果和程序如下,到此初始化的步骤完成:
【开锁阶段】
当鼠标点击门把手的时候会进入开锁阶段,我们首先需要把该素材移开并且隐藏。可能有友友要问,为什么需要移开,直接隐藏不行吗?经过小喵的测试,确实不行,由于某些原因,只隐藏不移开后面输入密码时会导致有些素材点不了,从而无法输入密码。 在隐藏后向所有角色素材发送【输密码】广播进入开锁阶段。
在发送广播后,我们来看看各个角色素材需要做什么指令。 首先是门锁素材,这个角色直接显示出来即可,后面就可以点击门锁上的数字输密码了,程序和舞台的窗口效果如图:
其次是数字0-9的素材,以数字0为例子,当接收到【输密码】广播时,需要先在最前面显示出来,确保可以点击的到,然后实时检测是否被鼠标按下,按下时会高亮素材,松开后恢复正常状态,同时使【输入密码】变量的最后面的值添加0,代表输入了一个0。 最后可以根据自己的喜好添加一些音效,完成后的程序如图:
“数字0”素材的写法我们已经完成了,那“数字1”素材接收到【输密码】广播的程序应该怎么写呢? 很简单,由于每个数字素材与鼠标的互动操作是一样的,唯一的不同就是输入数字不一样,我们可以直接按照下面动图所操作的那样,把程序拖过去然后把输入密码的值改成1即可,这样“数字1”素材接收到【输密码】广播的程序就轻松搞定了~
看到这里,友友们可以制作数字2-9的接收到【输密码】广播的程序嘛?如果实在是理解有困难的可以直接翻到文末查看白嫖源文件的方式哈,具体的程序这里就不展示了。 下面是“摄像头”素材的程序。在点击摄像头时会出现识别窗口,当识别到房屋主人时就可以发送开门指令——使【开门】变量设为1。此外,这里借用了摄像头角色显示输入的密码。
最后是门把手的程序,当我们点击门把手时会判断密码是否正确或者人脸是否正确,如果二者条件满足其一就会发送【开门】广播,如果条件都不满足则会说出密码错误并且重置密码。到此开锁阶段的所有素材程序编写完成。
【开门】
如果输入密码正确或者识别到人脸就能开门,这个时候需要把所有的14个角色进行隐藏,程序如下:
之后点击背景角色,当接收到【开门】广播时把背景换成开门背景,到此智能门锁程序已编写完成。
【程序获取】
如果需要获取程序源文件的友友,可以对本贴进行回复后免费下载哈~
【功能演示】
点击进入视频演示
|