找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 4793|回复: 1

NXT-G中如何使用双传感器完成遥控机器人的编程

  [复制链接]
发表于 2018-4-12 20:26:34 | 显示全部楼层 |阅读模式
本帖最后由 zqy0812 于 2018-4-12 20:33 编辑

         很多时候,由于单套9797(也就是NXT)套件中的传感器的限制,无法完成很多任务。比如我们常见的“遥控机器人”。
        大家都知道,在“遥控机器人”的编程过程中,首先我们要知道:第一,遥控机器人需要完成的任务;第二,需要到什么传感器;第三,如何在编程中现实机器人完成的动作。下面我们以9797套件中使用触碰传感器为例详细说明我们双传感器完成遥控机器人的。
        在我们的9797套件中,标配只有两个触碰传感器、一个光电传感器、一个超声波传感器、一个声音传感器。 经过分析现在我们的遥控机器人需要完成五个任务即前进、后退、左转、右转和停止。按理来说,我们需要使用5个传感器(或是4个传感器)才能让我们的机器人完成它所有的任务。但是现在关键问题是我们只有两个触碰传感器。我们要如何完成五个任务呢?
        下面我们通过“判断”模块来讲解一下两个触碰传感器如何去完成五个任务。首先我们先了解一下我们两个触碰传感器能完成几个动作(假设左手边的触碰传感器为①号,右边手的为②号;①号触碰传感器后面的马达为B,②号触碰传感器后面的马达为C)那么我们的两个触碰传感器可以有以下几种组合(由于触碰传感器只有按下和松开两个动作,所以两个传感器组合方式有四种如下图)其中“→”代表按下,“←”代表松开。

→①  →②  同时按下
←①  ←②  同时松开
→①  ←②  按下一号
←①  →②  按下二号

假设
→①  →②  同时按下  不可能实现
←①  ←②  同时松开      马达停止
→①  ←②  按下1号       向前运动
←①  →②  按下2号       向后运动

现在我们还需要完成两个任务“左转”和"右转"

→①再→②  按下1号再按下2号  向左转
→②再→①  按下2号再按下1号  向右转

但是我们在编程的过程中,如果我们是先对①号触碰传感器进行编程则
→②再→①  按下2号再按下1号  向右转
是无法实现的,同理先对②号触碰传感器进行编程那么
→①再→②  按下1号再按下2号  向左转
也不能实现。因为我们的编程是不可以先执行后面的语句。

        如何处理这种情况呢?我们可以通过加入我们的变量来完成,假设
←①  ←②  同时松开       马达停止赋值为0
→①  ←②  按下1号       向前运动赋值为1
←①  →②  按下2号       向后运动赋值为2
→①再→②  按下1号再按下2号  向左转赋值为3
→②再→①  按下2号再按下1号  向右转赋值为4

         则编写的程序如下:(我们需要新建一个"Action"变量,每当我们完成一个动作按上图的设置给变量赋值。
12.png

现在我们要对赋值为4的变量进行编程(也就是对→②再→①  按下2号再按下1号  向右转赋值为4进行赋值)通过上面的程序我们不难看出,我们的程序是从①号触碰传感器开始执行,所以程序不可以先对号触碰传感器进行判断然后在返回去完成对①号触碰传感器进行判断。所以当我们判断到只有号触碰传感器被按下的时候,也就是当变量为2的时候我们要对程序进行一个跳转,让程序去判断是否在号触碰传感器被按下之后①号触碰传感器也被按下了。程序如下:

3.png

        最后对我们的变量值进行一个任务分派,如下图把我们的数值和任务对应起来。
变量为0时   马达停止
变更为1时   向前运动
变量为2时   向后运动
变量为3时      向左转
变量为4时      向右转
(程序如下)

4.png

        这样子我们就可以在器材有限制的情况下,都能完成我们的作品了啦。大家都学会了吗?

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2018-4-12 23:26:30 | 显示全部楼层
遥控程序设置的时候,程序块按钮是个好东西
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-3-29 14:28 , Processed in 0.082299 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表