【项目介绍】
DF在4月份发起了一场“麦昆脑洞全开赛”,我第一时间报名了~~报名选的是“生活伴侣”主题,自此一直在琢磨要弄个什么项目呢~~~想了N个,要么没有所需的硬件器材,要么又有点偏离主题~~就在上周家里的扫地狗工作时,灵光一闪~~就有了这个“扫拖一体”麦昆扫地机了 看起来有点low~~而且没有吸尘器,并不能真正实现扫干净地板不过不过~~扫干净桌子、擦干桌子还是可以的。
【由于之前在家里造物记无法进行编辑,所以本文已经在论坛里发了,现在通过办公电脑将其搬运到造物记里!所以部分图片是直接从论坛原帖搬运来的!(^_^)本帖论坛地址点此】
【项目演示视频】
【项目流程】
步骤1 制作扫地机的毛刷扫把
我直接拿了个扫地狗的边刷配件把它的毛刷剪下来,用胶枪改造出了两个小毛刷,然后使用胶枪把它固定到2个小马达上。
步骤2 用乐高积木或其他结构件搭建超声波舵机、边刷马达和后面拖把的支架平台
下面是搭建完成后的效果:
后面的“拖把”我做了可拆卸设计,中间是使用螺丝锁的,恰到好处,螺丝刚好不会刮到桌面/地面:
步骤3 编写遥控手柄脚本
在遥控手柄的编写中,我采用了变量识别+中断的方式阻止micro:bit板连续、重复通过无线通信发送相同内容的问题。在多次实践中我发现,由于受到micro:bit性能及运行机制的限制(应该是这个原因),当触发某一个发送无线数据的条件后,该无线数据的内容会不间断地重复发送出去,直到该条件不满足才会停止无线数据发送。而接收无线数据的micro:bit板同样,只要有符合条件的数据它都会持续、重复地作出响应——接收和处理。这样就有可能因为接收无线数据的板子由于还没处理完之前接收到的数据的操作,导致遥控手柄按键按下后没有被响应或延迟响应的问题。
所以在发送数据的板子上,我就采用这种啰嗦的编写方法,在每个按键触发无线数据发射后,将按键状态改为空值,以此实现每次按键操作都只有发送出一次无线数据。同时,为了避免按键长按和电路感应延迟导致瞬间重复多次触发同个按键的问题,我在每个按键脚本中增加了一个“等待直到....”指令。
步骤4 编写麦昆小车脚本
麦昆小车上接的硬件只有超声波传感器,因为其占用了p1和p2口,如果需要使用其他引脚则需要从麦昆后面的金手指引出,所以我将其他硬件接到了电机驱动扩展板上。所以麦昆小车的脚本功能就比较简单了,主要是通过发送无线通信实现远程控制超声波传感器下面的舵机进行转动以在自动清扫模式下获取前方障碍距离,为行进方向提供判断依据,同时支持自动清扫模式和手动清扫模式下的动力驱动,实现小车的移动。
在这里,关于超声波多角度测距及数据分析及小车根据超声波测距结果实现自动行驶的脚本我参考了一位大神的帖子,如果对此有兴趣的朋友可以移步到大神帖子了解!麦昆双人足球游戏与清洁卫士计时赛游戏设计
最后,因为在麦昆行进过程中如果增加micro:bit 5x5点阵屏的内容显示的话,会导致控制延迟的问题(受限于板子的运行原理),所以在小车的板子里,本来是有同步更新小车状态的,如滚动显示当前清扫模式、动态显示当前“扫把”转速等信息,后来因为会导致控制延迟,所以全删了。
【新增内容】上面提到的点阵屏显示内容会影响小车接收数据的问题,在上周六与上文那位大神交流后,经过大神指导,可以利用Mind+里提供的“多线程”功能解决显示屏显示内容导致数据接收延迟的问题!(将显示屏的相关显示程序放到多线程独立的线程进行显示,与接收数据和处理小车移动的程序分开,可以同时运行,互不干扰!)
步骤5 为电机驱动扩展板编写脚本
电机驱动扩展板主要接了后面“拖把”的舵机、前面超声波传感器的舵机、左右两边“扫把”的两个小马达和碰撞传感器。脚本主要部位我都进行了注释,详细请看图!
步骤6 项目sb3源文件
我把三个板子的脚本打包放在这,有兴趣的小伙伴可以自行下载哈!点击此处下载项目源文件
【心得分享】
虽然作品做的比较low,而且最后好像也有点偏离活动主题(倒是有点像废柴发明~哈哈),不过通过这个项目的制作,我对于麦昆、对于micro:bit板子的了解和掌握程度又前进了一大步!通过这次活动,这个项目,令我对于micro:bit板间无线通信的原理及板子运行机制也更加熟悉了,相信下一个项目会有更大的进步!同时,也让手残的我长进了不少(虽然作品还是丑~^_^)
虽然最近忙着各种课内课外的繁多事物,但能如期交出一份作品,自己小小的成就感也得到了一丝丝满足!
最后,友情提醒:因为各(吃)种(太)原(饱)因,我在本项目里所有的变量全部采用中文汉字命名,导致麦昆小车的脚本文件在保存关闭软件后再次打开的时候提示出错。最后我又重写了一遍~~所以建议各位,变量尽量还是用英文或字母、数字类字符命名!(感谢活动群里一位有爱的小伙伴的亲情提醒)也期望Mind+方面可以尽快修复这个问题!
评论