您是否注意到孩子们在屏幕前停留的时间越来越长?如今,大多数儿童内容,无论是教育性的还是娱乐性的,都是通过屏幕传递的。
MoonBot 套件是一种教育机器人套件,可用于构建多个机器人。我用有脸的那个来给 QuizBot 编程,原因很明显。它是三者中更友善的机器人。
让我们看看人形 MoonBot 可以使用哪些可编程交互元素。
这是 MoonBot 手册中的图表,用于显示不同的传感器和执行器
我的总体计划是这样的:
MoonBot套件自带一套识别卡,可以被MU视觉传感器检测到。我会用数字卡来代表测验问题中的 4 个选择。为了便于抓握,我在每张卡片的背面添加了一个乐高横梁。
我们需要为不同的测验问题生成相当多的 mp3 文件。我通过在 MacOS 上使用文本到语音功能来做到这一点。基本上,这个方便的功能允许您将任何文本转换为可用于许多不同项目的声音文件。
您需要考虑的一件事是您的机器人应该使用哪种声音。MacOS 提供许多不同的声音,男性或女性,美国或英国或外国。经过一些测试,我习惯了“汤姆”的声音,听起来足够响亮和清晰。
你从 MacOS 听到的声音大多是成年人。为了让声音更可爱一些,我做了一些后期处理。我使用 Audacity 提高声音的音调,并将其从 m4v 转换为 mp3,这是 MoonBot 扬声器模块接受的唯一格式。
这是我生成的声音列表。MoonBot 扬声器模块使用声音文件名的前 4 个字母来查找该声音。所以我用 4 个字母的标识符来组织文本。
除了问题和答案之外,这些声音资源还包括运行测验时常用的术语。扬声器模块有一个 USB-C 连接器,可以将其插入计算机,然后会出现一个 USB 驱动器来保存所有声音文件。请注意,扬声器模块有 128 个 mp3 文件的限制,因此您需要删除其上的所有原始声音文件并将此设置复制到模块。将声音文件复制到其他地方,以便恢复原始声音。
MoonBot 扬声器模块的一个好处是它可以独立更新。这意味着您可以替换整个问题和答案部分,而无需更改任何代码。
MoonBot 上的软件具有三个任务:
为了更好地组织程序,我使用一个简单的状态转换图来展示测验的流程
该图也对应于程序的主循环实现,我是这样混合拖放代码的:
我使用一个名为“状态”的全局变量来跟踪测验的当前状态。在不同的状态下,将调用不同的函数来执行该状态下的操作。根据状态图,从一种状态到另一种状态的任何转换都将涉及“状态”变量到该状态的更改以及当前函数的返回。返回后,主循环中的 switch 块可以将程序引导到新的状态。
在继续介绍每个状态函数之前,我想简要谈谈一些详细的设计注意事项。
在初始化代码中,我声明了“状态”变量以及一些用于设置每个状态的常量变量。初始化的传感器和执行器是:
开始功能循环运行,以提示任何用户通过触摸左耳来开始测验。它还运行人员跟踪算法,使其始终转向人。
测验功能通过播放 12 个随机问题循环运行整个测验,从用户那里读取结果。根据结果正确与否,它也会反馈给用户。
测验完成后,它将状态转换为 STATE_RESULT。
结果函数将向用户显示分数,如果分数足够高(9 或更高),机器人将跳一段短舞。
如果检测到双耳被触摸,result 函数将退出,并将状态更改回 Start 函数。
我还将展示一些对运行程序很重要的其他功能。首先是 TrackingPeople 功能,它试图通过调整头部伺服和电机将人物保持在相机的中心。
二是ReadResult函数,利用视觉传感器读取用户出示的卡片结果。
第三个是 GetRandomNoDupe 函数,它负责随机选择以前没有选择的新测验索引。请注意,您必须记住所有以前的问题索引才能进行“去重复”。
当然,还有比我这里展示的更多的功能,我会把所有的功能都给一个截图。整个代码区比我的29寸超宽屏还要大:)
各个功能的详细介绍请查看附件中的mixly代码。随意修改代码以自定义交互。
如果您只想自定义问题,则无需更改任何代码。只需刷入我的代码并更新扬声器模块中的问题 MP3。如果你想改变问题的数量,你只需要在 RunQuiz 和 GetRandomNoDupe 函数中修改几个数字就可以了。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !