2018-12-15 18:09:48 [显示全部楼层]
2190浏览
查看: 2190|回复: 0

[创客活动] 更多线程、更多精彩

[复制链接]
——测评Mind+多线程功能模块
福建省晋江市永和镇群英小学、群英创客空间 李和洽
一、  测试背景
哈罗,大家好,我是福建省晋江市永和镇群英小学的教导、群英创客空间负责人李和洽老师。我们现在主要面向小学三至六年级开展创客教育活动,课程内容有Scratch创意编程、Micro:bit、Arduino3D打印、激光切割课程。自单片机的C语言开始,我一直在寻找一种面向硬件、操作简便的编程软件进行教学使用,后来的Mblock和Mixly的出现都曾经让我欣喜若狂。而近几年来更容易入门且功能强大的Micro:bit的出现又带来了巨大的冲击,仿佛一下子所有的图像化编程软件都“长出”了Micro:bit的编程模块,可是体验过后觉得这些软件的操作要么功能简单,实现不了太多创意,要么界面和操作不够友好,即便是Micro:bit的官网也不例外,在教学使用时不是很趁手。这个困境直到Mind+的出现得以解脱。不可否认,Mind+是我目前用过的,适合新手自学、教师课堂教学使用的优秀的图形化编程工具,它将常用的编程代码模块、面向硬件的功能模块、控制板变换、丰富的传感器、强大的系统功能集于一身,通过简单的点击、拖拽、填空的方式便可完成多种硬件混合的编程工作,实在便捷。在这一学期的教学实践中证明,它的功能和操作设计深受孩子们喜欢,大大减轻了教学难度,提高了教学效率。
近一年来,我时刻关注着Mind+的迭代消息,几乎每一个版本都安装和试用过,也和晋江教师创客团队的伙伴一起测评过,把我们的一些想法跟Mind+的技术人员进行反馈,在交流过程中,逐渐与李亮、云鹏、春秋等DF的技术和培训大咖熟络起来,在他们的指导下更加熟悉Mind+与配套器材的“功夫“和”脾气“。非常高兴的是,我们反馈的一些需求在后来Mind+的迭代中渐渐变成了一块块可爱的积木,大大的方便了我们的教学和创作。感谢Mind+团队给我们提供了一个简便、好用的编程工具。
多线程这个功能需求其实源于小孩子的编程习惯。我们学校自2014年起成为晋江市首批Scratch创意编程试点学校,孩子们从小学四年级开始学习Scratch创意编程。Scratch这种面向角色的积木式编程方式深受孩子喜爱,其操作的简便,效果的即时显示和灵活、随意的编写风格恰恰符合小孩子的学习特征,使得他们可以自由的通过脚本和角色实现自己的想法,获得学习和创作上的满足感,从而爱上编程,爱上创作。在这个过程中Scratch软件“当绿旗被点击“、”当克隆体启动时“这类启动模块的多次复用习惯逐渐在学生身上根深蒂固了,他们很喜欢,也习惯把同时要做而时序上又不能互相干扰的事情放在多个“当绿旗被点击“、”当克隆体启动时“中编写,这样既可以快速实现想法,又很有效。不过,这种习惯在我们这学期创客空间建立,孩子们开始进入开源硬件领域的学习时带来了负面影响。我们知道孩子的想象力是无限的,甚至很多时候是“贪心”的,他们在学习开源硬件的过程中喜欢“榨干”硬件的性能,让硬件可以同时做更多的事情,比如让Micro:bit一边显示他们绘制的图案,一边用运动传感器探测人是否靠近来实现自动打开、关闭灯光的功能。这类需要并发处理的创作需求,总是在他们摩拳擦掌、跃跃欲试时被Mind+和其它图像化编程软件无情的泼了冷水——想得美!终于盼望着,盼望着,新年的脚步近了,Mind+的新功能模块——多线程功能模块产生了。

二、  多线程功能测试
收到这个带有多线程功能的内测版软件,我不禁要为开发团队点一千个赞。我可以激动的告诉孩子们:欢呼吧,造起来吧。你们曾经无奈丢掉的创意,现在可以实现了。让我们赶紧来一睹为快吧!

(一)添加“多线程“功能模块

1.点击”扩展“按钮,再点击“功能模块“就可以看到”多线程“功能模块
功能模块界面.png

2.点击” 多线程“,将其加载到软件主界面中
加载多线程.png


3.在主界面的” 功能模块“中,我们可以看到多线程模块的三个功能积木。

主界面.png

(二)测试任务设计
本次测试为了验证多线程模块在多个并发事件中的独立、稳定和可靠性,我设计了以下几个任务交给不同的启动模块来运行。
1.  当无线接收到数据时让Micro:bit显示显示”zuo”或”you”。
2.  当无线接收到数据时让舵机转到相应角度。
3.  当按钮按下时开或关闭LED灯。
4.  使用旋钮实时控制电机(风扇)转动速度。
5.  当声音传感器探测到声音数值大于600时,关闭LED灯。
在以上任务中最为关键的是第1个任务会占用Micor:bit控制板的运行时间,如果没有打开其它线程,那么任务3至任务5将不能实时有效的进行,而是必须等到控制板显示的空隙时间才能运行。任务2也可以看作系统本身的一个线程,将它纳入到测试中可以更加全面的测试控制板运行多线程脚本,进行并行处理的可靠性。

(三)测试器材准备
本次测试准备的器材有Micro:bit控制板、扩展板、按钮、旋钮、模拟声音传感器、红色LED灯、风扇(电机)、舵机,为了电源的稳定,需要给扩展板供电,供电电流最好大于等于1A。

完整硬件结构.jpg

(四)测试脚本编写
1.Mciro:bit主程序开始
主程序.png


2.当无线接收到数据实时改变舵机角度
当无线接收到数据.png


3.子线程1:通过按钮实时开、关灯
子线程1.png


4.子线程2:通过旋钮实时控制风扇速度
子线程2.png


5.子线程3:根据无线接收到的数据显示“zuo“或”you“
子线程3.png


6.子线程4:如果声音模拟值超过600就关闭LED灯
子线程4.png


(五)用自定义函数替换子线程的对比测试脚本编写
1.Mciro:bit主程序开始,定义四个函数。
主程序02.png


2.当无线接收到数据实时改变舵机角度


3.开关灯函数替换子线程1,试验通过按钮实时开、关灯
开关灯.png


4. 控制风扇函数替换子线程2,试验通过旋钮实时控制风扇速度

控制风扇.png

5.显示接收到数据函数替换子线程3,试验根据无线接收到的数据显示“zuo“或”you“
显示无线接收数据.png


6.吹灭灯函数替换子线程4,试验声音模拟值超过600就关闭LED灯

吹灭灯.png

三、  测试结果

(一) 测试视频
1.  使用多线程功能模块的子线程进行试验的视频


2.  使用自定义函数替换子线程进行试验的视频


(二) 测试结论
1.使用多线程功能模块的子线程可以正常、顺利完成5个测试任务。测试中Micro:bit主程序脚本、当接收到无线数据脚本、4个子线程脚本均运行正常,能独立处理各自任务,无肉眼能发现的时序上互相干扰情况。控制板在显示“zuo“、”you“字母时需要进行滚动显示,会影响本子线程的运行进度,但丝毫不影响舵机实时接收数据来改变角度,也不影响按钮实时开关LED灯,不影响旋钮实时改变风扇速度。在硬件方面,各传感器工作正常,控制板运行正常,无卡顿、断电现象。以上结果表明,多线程功能模块在并发处理多任务上有稳定、可靠的品质,是Mind+又一个出色的新功能模块。我相信这项功能必将对孩子发散思维、实现创意有很大的帮助。
2.使用自定义函数代替子线程不能全部正常完成5个测试任务。除了任务2,其它任务均受控制板显示字母影响,必须等到显示空隙才能运行其它函数脚本,完全达不到独立、并发、实时的需求。

四、其它建议
1、建议添加积木功能介绍。当鼠标移动到积木时,能以标签的方式提示这块积木的使用帮助信息,帮助学生理解和掌握积木的用法。
2.建议添加积木自动纠错功能。当用户把一块类型不符合的积木拖到不恰当的位置时,应该出现错误提示,提示信息应包含正确用法的介绍。
3.期待如上传模式般功能强大的实时模式尽快开发出来,这样让学生能制作出更多有趣的软件、硬件互动作品。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail