查看: 2684|回复: 0

【S4A】编程小白的玩具,一起来升国旗吧!

[复制链接]
  • TA的每日心情
    慵懒
    2015-4-27 14:19
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2015-3-24 10:17 | 显示全部楼层 |阅读模式
    本帖最后由 千年风雅 于 2015-3-24 10:17 编辑

    近年来体感游戏非常火爆,它的原理是通过视频设备捕获动作信息分析之后体现在游戏中,而我们今天也能简单的做一个类似的实验。

    一.实验简介:

    在实验中,我们将使用由Open Jumper提供的Arduino红外测障传感器模块配合S4A完成手动升降国旗的动作。

    二.材料清单:

    红外测障传感器模块(如图)*2
    图片1.png


    三.接线说明:
    将红外测障传感器模块分别接在数字口2和3,如图示
    1.jpg
    然后将两个红外测障传感器模块并列固定在一个竖直的平面上,连接数字接口2的传感器位于上方,相隔距离大于20cm。

    三.角色列表:


    首先将默认角色(Arduino1)造型改为一面国旗,可以从网上下载(格式.png),也可以在S4A的绘图编辑器简单的画出来。并使用工具将其调整为合适大小。为了使国旗升降运动时方向角色不会上颠倒,我们将面板上的允许旋转改为不允许旋转。然后添加第二个角色旗杆,直接在绘图编辑器中画出一根竖着的长杆,调整好大小与国旗匹配。
    图片3.png

    四.参考脚本:

    图片4.png

    由于我们只需要升降国旗,旗杆是不会动的,所以只需要编写国旗的脚本即可。

    五.实验分析:

    在这个实验中,我们Arduino板上的数字口2和3输入两个红外测障传感器返回的信息,Open jumper的红外测障传感器模块在前方没有检测到障碍物的情况下,返回“true”,即“sensor pressed”为真,那么表示检测到障碍返回的信息为“False”,即“sensor pressed”为假,在脚本中表示为 图片8.png ,下一步 图片6.png 表示开始计时,接下来 图片7.png 表示这个条件持续到0..3秒后开始判断下一个条件,即 图片9.png 数字接口3的返回信息,当你的手先后经过连接数字接口2和3的红外测障传感器时,发出广播“升旗”。
    升旗动作的判断完成之后就需要在舞台中表现出来,当接收到广播“升旗”这一信号后,执行动作 图片10.png ,方向由角度表示,0°为上,相应的180°为下,移动步数的大小决定了国旗上升距离,数字越大,一次动作上升距离就越多。以上脚本完成后,复制一份,将数字口顺序颠倒,广播信息改为“降旗”,方向改为180°即可。设置完成后,在传感器前模拟拉绳子的动作,舞台上的国旗也会随着你的动作而上升,反之则下降。

    六.实验扩展:

    上述脚本能够形象的展现国旗的升降,但也存在一些问题,例如当国旗上升(下降)到旗杆的顶端(底部)时,动作并不会停止,当接收到信号时还会继续移动,要解决这个问题,我们可以使用脚本控制命令 图片11.png 以及 图片12.png 来完成,达到旗帜到达顶端便停下来,相应的增加一个外观命令中的 图片13.png 命令来使旗帜降到底部就自动消失。另外还有许多命令的搭配,可以达到不同的效果,可以自行研究添加,还可配上国歌,使整个过程更加的真实有趣。

    图片5.png
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    arduino实现L298N控制工业步进电机
    arduino实现L298N控制工业
    求助 L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主
    小白请教个问题
    小白请教个问题
    同样一个程序,用最新版本的IDE不能编译, 用老版本的却能编译,问题能处在哪里呢?
    GPS仪表
    GPS仪表
    本项目使用GPS模块实现速度测量,arduino需要安装TinyGPS PLUS库,屏幕显示速度、
    分享《开始使用uArm》侵删!
    分享《开始使用uArm》侵删
    GettingStarted with uArm v1.1 Before assembling the uArm, youshould first instal
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表