萌感十足的闸机,让停车成为一种享受

写在前面:最新一期的投稿作品来啦! 这一期的两个编程作品都用到了程小奔,但玩法各有不同。创意实用的自动闸机,好玩有趣的沙狐球游戏,这样子的程小奔你见过吗?

自动闸机

作品简介:

随着科学技术的发展,“效率”成为了生活的主旋律,越来越的的机器代替人来工作,它不用休息,快捷且准确地执行这人们为它设计好的程序,例如生活中的听停车场闸机,就是一台这样高效的机器人,它没有周末,不分昼夜,只要有汽车进出它就会提供服务。

今天我们就来使用程小奔和神经元套件来制作一台这样的停车场闸机机器人。

结构拼装步骤

我们使用两台程小奔,一台用于模拟车辆,另外一台用于制作模拟闸机,今天我们仅制作初级版本的闸机(即只有遇到车抬杆,车走降杆的功能),后续我还会为大家带来带有“充值&消费”功能的高级本闸机。

效果展示

 

相关器材:

1、舵机

2、积木若干(梁、销、六孔直角梁)

3、舵机驱动

4、程小奔*2

5、橡皮筋若干(用于积木梁和舵机的固定)

 

主体逻辑:

闸机:当按下“A”键时,开始,时刻检测前方“车辆”,如果有则使用舵机开闸并显示“UP”,否则落下栏杆关闸并显示“down”。

车辆:(闸机前有块红色区域)颜色传感器向下,如果检测到红色停止运动1s,之后继续前行。

 

知识点&功能:

颜色红外识别传感器(小奔)、障碍物传感器(小奔)、运动神经元_舵机驱动模块、神经元_舵机。

我们共有两台车,一台车A用来模拟进入闸机的车辆,另外一台车B用来模拟闸机。

关于A车,定义事件“当按下B键时”重复执行,如果遇到红色时(红外颜色传感器旋转向下),小车停车1秒(等待闸机升杆),之后继续前进通过闸机(结束),否则(没有遇到红色)前行以30%的速度(继续)。

这里需要注意两点:

1、你的操作台颜色是否出现了你的判定颜色(案例中设置为红色,为了提高效率减少错误,我在操作位置铺垫纯白A4纸),如果有干扰因素,建议更换操作位置或像案例一样铺垫纯色纸张从而加快开发步伐。

2、小车初始位置是否摆正,或如果左右轮转速差可以使用“运动模块”中的其他语句进行修正操作(例如:“左轮动力XX%,右轮动力XX%”语句),另,减少行驶距离从而减小误差。

关于B车,首先组装神经元部分(即闸机栏杆和舵机部分)。

定义事件“当小程启动时”,重复执行如果前方有障碍物,舵机旋转至90度,2秒后旋转至0度(初次使用舵机的小朋友需要先了解一下舵机的工作方式)。

 

沙狐球

作品简介:

沙狐球(shuffle-board)是一种体育休闲运动,二十世纪引进中国时音译为沙狐球或沙壶球,也叫桌掷球。

它起源于十五世纪的英国宫廷,悠闲的贵族们,偶尔发现推硬币带来的新奇、刺激,他们以酒为注兴高采烈地将硬币滑向长桌的另一端,以赌输赢,后来逐步出现了专用的沙狐球取代硬币。

沙狐球的基本玩法是双方轮流将壶推向长桌的尽头,每局8球。在每一轮比赛中,当球全部推出后,推出最远的球为本轮的胜方。

效果展示

 

相关器材:

小程、神经元(陀螺仪传感器)、慧编程V5.0.0-beta.5.2版本

 

主体逻辑:

首先,将神经元(陀螺仪传感器)连接到小程,可以用显示读数来检测通讯是否正常。

接着,当按下“C”键时,游戏开始,LED阵点显示如图;

抓住小程用力推出(甩一下),陀螺仪会计算瞬时的加速度,此时位于(3,0)的“沙壶”会顺势向前“滑动”,每过一个“|”分数score=1、score=2、score=3,挡“沙壶”停止闪烁时按下“B”键会显示得分。

然后按下“C”键可以重新开始游戏,最后操作者也可以根据自己的实际情况修改程序。

 

知识点&功能:

陀螺仪传感器_X轴加速度(神经元)、被摇晃?(小程)、神经元_陀螺仪模块、运算模块_绝对值、加、比较、“与”运算、向上取整。

图表示意图

 
制作步骤:

首先使用“显示图案”绘制图案,如“图表示意图”所示。

我们先新建这几个变量。

同时组装好我们要用到的设备:小程+陀螺仪(神经元)

接下来,我们开始编辑逻辑部分:

如果小程“被摇晃?”,那么将其x坐标值xn做归零操作;同时将陀螺仪的在摇晃中测得在X轴上加速度赋值予c。

如果c大于1,重复执行“c+3”次[切换点亮/熄灭 小球的坐标阵点,并且xn值增加1 播放声音]

此时“小球”已经运动到计算位置,闪烁10次(用于提醒玩家)

如果xn大于3并且xn小于9,得一分,score设为1;

如果xn大于8并且xn小于13,得二分,score设为2;

如果xn大于12并且xn小于16,得三分,score设为3;

如果xn大于16或xn小于4,不得分,score设为0;

整体逻辑如下图所示:(使用“if···else···”多层嵌套语句)

然后,我们来让小程显示我们在本局游戏中所获得的得分(score);

按下B键,显示score的值,并且将c值重置为0,用于下一局开始。再次按下C键,游戏重新开始。

整个脚本如下:

到这里,作品的整体框架就已经差不多完整了,大家可以自己动手来试一试啦!

 

作者: 于飞

2014年毕业于东北农业大学 计算机科学与技术专业

2014年二月出版《Unity3D发风暴之入门篇》(电子工业出版社)

同年供职于深圳国泰安教育技术有限公司,从事教育软件开发工作(3D虚拟现实类),2016年开始从事创客项目开发。

如果你也有好玩有趣的作品,并且想要与更多的人交流分享,那就赶紧来投稿吧~

 

原文发布于公众号:慧编程mBlock(ID:mblockcc)