机器人编程软件入门新版_第1页
机器人编程软件入门新版_第2页
机器人编程软件入门新版_第3页
机器人编程软件入门新版_第4页
机器人编程软件入门新版_第5页
已阅读5页,还剩134页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一,目录二,目录三,一、使用注意事项,VEX编程软件有中、英文版(中、英文版各自都有1.0版和2.0版),中、英文版不能混用,最好不要既下载中文版编的程序到主控器,又下载英文版编的程序到主控器,这样会损坏主控器内部芯片中的底层程序,严重时会导致主控器的某些芯片不可用,从而使主控器不能使用; 如果是没有购买序列号的用户,打开软件时会弹出一个注册窗口,中文版点暂不注册即可试用。英文版点Run in Evaluation Mode按钮即可试用;中、英文1.0版的都可试用30天,英文2.0版可试用7天;中文2.0版可试用15天; 购买了序列号的用户,需联网注册, 英文版的序列号只能在一台电脑注册一

2、次,如更换电脑安装,需在软件的注册页面填写一些资料发送给美国First公司,经其审核通过后便会回发一个新的序列号,也可向本公司购买;中文2.0版的如需更换电脑安装,先点菜单栏 帮助 注销,然后在另一台电脑使用该序列号联网注册便可继续使用了; 没有购买序列号的用户,一旦安装软件,软件便自动与系统硬件绑定,试用期满后即使把软件卸载重装也不能继续试用,解决办法为在系统未安装VEX软件时,先用备份工具备份系统,然后再安装英文版软件,当软件过期后,只需把系统还原,在重装VEX软件即可继续试用; 英文版软件比中文版软件稳定,中文版软件存在一些BUG;,返回目录,使用注意事项,中文版及英文版编写的程序和代码

3、不能相互用对方的软件打开和编辑(英文版只能打开用英文版软件编的程序和代码,中文版只能打开用中文版软件编的程序和代码); 中文1.0版软件编写的程序不能保存到C盘(包括桌面),否则会导致程序不能打开或者出现未知错误; 中文1.0版软件在每次下载程序的步骤为:保存编译链接下载,然后选择端口; 查看下载线使用的COM口的方法是:我的电脑右键属性硬件设备管理器端口(COM和LPT) Prolific USB-to-Serial Comm Port (com3)最后这一项的com3就是当前VEX下载线使用的端口;然后在软件里选择相应的端口即可下载程序到主控器,具体方法后面有详细介绍; 1.0版软件不能定

4、义子程序,2.0版软件可定义子程序; 1.0版软件所有变量都是全局变量;2.0版软件中可定义全局、局部变量; 1.0版的软件无中断、继续、返回模块,2.0版软件中有; 使用英文网络版2.0时,请烧录V7版底层程序; 当机器人不按照编写的程序动作时,如果仔细检查程序都未发现错误,则说明可能是主控器的底层程序不正常,那么需要对底层程序作一次修复,中文版2.0为,菜单栏生成下载初始化程序,返回目录,二、主界面,工具栏菜单,编程区,C语言代码区,链接编译区,模块区,返回目录,三、工具栏模块(英文版),返回目录,工具栏模块(中文版1.0),返回目录,工具栏模块(中文版2.0),返回目录,四、编程区,对于

5、1.0版每一个新的程序都会有一个I/O定义模块,变量定义模块(Variables),开始模块(BEGNI)和结束 模块(END)。 2.0版则增加了局部变量定义模块; I/O模块、全局变量定义模块、局部变量定义模块应当在开始编程之前定义。 在每一个程序里,开始模块表示程序的第一个模块;结束模块表示程序的最后一个模块。 你必须放置所有的模块在这两个模块之间。 下面介绍一些常用操作: 插入模块:在模块区用鼠标左键点住相应模块,拖动到编程区的开始和结束模块之间,放开鼠标,然后只要 设置好模块的属性就行了。 需要说明的是传感器模块必须先定义其变量才能插入到编程区内。 编辑模块(Edit):左键双击修改

6、,也可单击右键。英文版是点右键,选择编辑。 复制模块(Copy):中文版2.0是ctrl+c复制模块,也可单击右键;英文版是按住ctrl键,拖拽模块,然后将复制的模块放到你需要放置的位置。也可单击右键。 剪切模块(Cut):中文版2.0是ctrl+x剪切模块,也可单击右键;英文版是先选中模块,再点右键选择剪切。 粘贴(Paste) :中文版2.0是ctrl+v粘贴模块,也可单击右键;英文版是点右键,选择粘贴。 删除模块(Delete):中文版2.0是Delete键删除模块,也可单击右键;英文版是点右键,然后选择删除。 右键单击任何一个模块,可以对该模块进行编辑、复制、剪切、删除、粘贴等操作 。

7、 编译下载:F5为编译程序,F6为编译并下载程序,返回目录,五、I/O定义模块,双击I/O图标或点鼠标右键(I/O定义模块),你能够配置控制器的I/O端口。 模拟/数字端口(共16个口)(ANALOG/DIGITAL):波浪线表示模拟端口(默认为14),箭头表示数字端口;箭头向左的表示信号是由外部输入到主控器(默认为510) ,箭头向右的表示信号是由主控器内部输出(默认为1116),模拟和数字端口可以互换,数字端口的输入输出也可以更改; 中断端口(INTERRUPTS) (共6个口):不能更改; 马达端口(MOTORS) (共8个口):不能更改;,返回目录,六、变量设置模块(1.0版),双击变

8、量设置图标,打开程序变量定义对话框。你能设置程序需要使用到的变量; 这里数据类型一般都选择 int(整型,它存储 21474836482147483647之间的整数), 变量名称:英文字母或字母加数字,不能以数字开头且变量名不能与软件中使用到的单词相同(如变量的类型),变量取值处可预先设置变量的值,也可在后面的条件中设置其值,返回目录,局部变量设置模块(2.0版),双击局部变量设置图标,打开程序变量定义对话框。你能设置程序需要使用到的局部变量; 局部变来那个指只能在部分区域使用的变量; 这里数据类型一般都选择 int(整型,它存储 21474836482147483647之间的整数), 变量名

9、称:英文字母或字母加数字,不能以数字开头且变量名不能与软件中使用到的单词相同(如变量的类型),变量取值处可预先设置变量的值,也可在后面的条件中设置其值,1.选择变量类型,一般都选int(整型变量),2.键入变量名字,要求必须是英文字母组成,这里可以删除整行不需要的变量,这里可以键入变量的值,要求必须是英文数字组成,也可先不定义变量的值,返回目录,全局变量设置模块(2.0版),双击全局变量设置图标,打开程序变量定义对话框。你能设置程序需要使用到的全局变量; 全局变量指在该程序的所有模块中都可以使用该变量; 这里数据类型一般都选择 int(整型,它存储 21474836482147483647之间

10、的整数), 变量名称:英文字母或字母加数字,不能以数字开头且变量名不能与软件中使用到的单词相同(如变量的类型),变量取值处可预先设置变量的值,也可在后面的条件中设置其值,1.选择变量类型,一般都选int(整型变量),2.键入变量名字,要求必须是英文字母组成,这里可以键入变量的值,要求必须是英文数字组成,也可先不定义变量的值,这里可以删除整行不需要的变量,返回目录,七、接口说明,返回目录,马达端口MOTORS,1-8可接:马达、伺服器,返回目录,中断端口INTERRUPTS,1-6可接:编码器、超声波传感器标有Output字样的线,返回目录,模拟/数字端口ANALOG/DIGITAL,1-4可接

11、:光敏传感器、寻迹传感器、碰撞开关、限位开关、角度传感器,11-16可接:超声波传感器标有Input字样的线、气缸,5-10可接:碰撞开关、限位开关,返回目录,接口说明,返回目录,指示灯说明,返回目录,八、Inputs主控输入,返回目录,这里需要先解释一下数字和模拟这两个概念,它们是电路中信号传输的两种方式; 简单解释为: 数字电路传输的信号的波形在示波器上显示为方形,称为方波,其波形高低一致,高的用1表示,低的用0表示; 模拟电路传输的信号的波形在示波器上显示为波浪形,称为正弦波,其波形高低起伏不一致,所以它是连续的,表示它的数字也是大小变化不定的; 通俗的讲数字信号传输的信号用1和0表示;

12、 模拟信号传输的信号用0、5、10、50、18、33 100等等这样大小不定的数字表示; 数字电路与模拟电路的信号要互相交换传输就必须采用数模转换电路转换以后才能传输; VEX机器人中的传感器也分数字传感器和模拟传感器,简单解释为: 数字传感器是指传感器传输的是数字信号,即传感器只有两种状态,这两种状态在软件里面用1和0表示 模拟传感器是指传感器传输的信号会随外界环境条件的改变以及人为的因素而改变,即它们的状态是不确定的,那么在软件里面表示其状态的数字也是大小不变的(但也规定了一个范围);,1、碰撞开关传感器 bumper switch,碰撞开关是数字式的传感器。 它有两种状态:即开和关; 当

13、碰撞开关断开的时候,定义为1。 当碰撞开关闭合的时候,定义为0。 打开英文版位于Test Code的文件夹中的BUMPERTEST.ECP工程,看其示范怎样编写碰撞开关程序。,1.选择碰撞开关连接在主控器上的通道,2.选择一个预先定义的碰撞开关变量,对当前模块注释,将帮助你阅读程序和理解模块的功能。,3.设置好以后点OK,返回目录,碰撞开关传感器 bumper switch,碰撞开关程序范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个碰撞检测模块,接着拖入一个当循环模块对当前碰撞变量进行判断,然后在当循环里面拖入一

14、个马达控制模块,再拖入一个碰撞检测模块,属性和当循环外面的碰撞检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块; 程序功能:当 a=1即是碰撞开关没碰到时,就不停的启动马达1正转,反之a=0则是当碰撞开关碰到时,就跳出当循环,停止马达1。,返回目录,碰撞开关 bumper switch组装示意图,返回目录,2、光敏传感器 light sensor,光敏传感器是模拟式的传感器,它是用来检测周围环境光线的亮暗的传感器; 把光线由亮到暗的范围定义在0到1024。值越小表示光线越亮,值越大表示光线越暗; 打开英文版位于Test Code文件夹中的LIGHTTEST.

15、ECP工程,看其示范怎样编写光敏传感器程序。,1.选择光敏传感器连接在主控器上的通道,2.选择一个预先定义的光敏传感器变量,对当前模块注释,将帮助你阅读程序和理解模块的功能。,3.设置好以后点OK,返回目录,光敏传感器 light sensor,光敏传感器程序范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个光敏检测模块,选择变量a,接着拖入一个当循环模块对当前亮度变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个光敏检测模块,属性和当循环外面的光敏检测模块的属性一样,这样就构成了一个条件循环

16、,最后在当循环外面在拖入一个马达控制模块; 程序功能:当 a=800则是光线比较暗时,就跳出当循环,停止马达1。,返回目录,3、限位开关limit switch,限位开关是数字式的传感器。和碰撞开关类似; 它有两种状态:即开和关; 当限位开关断开的时候,定义为1 当限位开关闭合的时候,定义为0 打开英文版位于Test Code的文件夹中的LIMITTEST.ECP工程,看其示范怎样编写行程开关程序。,1.选择限位开关连接在主控器上的通道,2.选择一个预先定义的限位开关变量,对当前模块注释,将帮助你阅读程序和理解模块的功能。,3.设置好以后点确定,返回目录,限位开关limit switch,限位

17、开关程序范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个限位检测模块,接着拖入一个当循环模块对当前限位变量进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个限位检测模块,属性和当循环外面的限位检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块; 程序功能:当 a=1即是限位开关没闭合时,就不停的启动马达1正转,反之a=0则是当限位开关碰到时,就跳出当循环,停止马达1。,返回目录,限位开关limit switch组装示意图,返回目录,4、巡线传感器 Line Follower

18、,1.选择巡线传感器连接在主控器上的通道,2.选择一个预先定义的巡线传感器变量,对当前模块注释,将帮助你阅读程序和理解模块的功能。,3.设置好以后点确定,巡线传感器是模拟式的传感器,它是用来检测颜色的传感器; 把颜色的深浅由白到黑的范围定义在0到1024。值越小表示颜色越白,值越大表示颜色越黑; 打开英文版位于Test Code的文件夹中的LINEFOLLOWER.ECP工程,看其示范怎样编写巡线传感器程序。,返回目录,巡线传感器 Line Follower,巡线传感器程序范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖

19、入一个巡线检测模块,接着拖入一个当循环模块对当前灰度变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个巡线检测模块,属性和当循环外面的巡线检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块; 程序功能:当 a=800则是颜色比较黑时,就跳出当循环,停止马达1。,返回目录,5、编码器 Optical Shaft Encoder,编码器是一个数字式的传感器。它能够用来测量和定义马达转动的圈数或者路程。 编码器一般插在中断端口(INTERRUPTS) 编码器旋转(360 度)等于90个编码脉冲。 编程时,模块需要放三次到编程区,第一次选择开始

20、,第二次选择预设,第三次选择取值。 打开英文版位于Test Code的文件夹中的ENCODERTEST.ECP工程,看其示范怎样编写编码器程序。,1.选择开始,告诉编码器开始记录编码脉冲,2.选择编码器连接在主控器上的端口,返回目录,编码器 Optical Shaft Encoder,6.选择取值,开始把编码脉冲的值反馈给变量,7.选择编码器连接在主控器上的端口,8.选择一个预先定义的变量,3.选择预设,为编码器清零,4.选择编码器连接在主控器上的端口,5.选择固定值,设为0,表示编码器的初始值为0,为编码器清零,对当前模块注释,将帮助你阅读程序和理解模块的功能。,返回目录,编码器 Optic

21、al Shaft Encoder,编码器程序范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入三个编码器检测模块,第一个选择开始,第二个选择预设,第三个选择取值;接着拖入一个当循环模块对当前路程变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个编码器检测模块,属性和当循环外面设置取值的那个编码器检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块; 程序功能:当 a30则是马达转动的路程达到30时,就跳出当循环,停止马达1。,返回目录,编码器安装示意图,返回目录,6

22、、超声波传感器Ultrasonic Sensor,1.选择开始,开始命令告诉超声波开始记录声波。,2.选择超声波传感器连接在主控器上的中断端口,3.选择超声波传感器连接在主控器上的输出端口,4.选择取值,取值命令允许用户将来自超声波的值反馈给一个变量。,5.选择超声波传感器连接在主控器上的中断端口,6.选择超声波传感器连接在主控器上的输出端口,7.选择一个预先定义的变量,超声波传感器利用高频率的声波来探测障碍物。它发射一个超声波信号,声波被外界物体反射回来。然后超声波传感器就可以根据接收到的信号的时间和强弱计算出离障碍物的距离 超声波传感器有两根连接线 确保标有Output标签的线连接到主控器

23、的中断端口。 确保标有Input标签的线连接到主控器的数字输出端口(默认的为1116)。 超声波的取值范围是:2100 小于2cm是超声波的盲区,在2cm以内就检测不到任何物体。 打开英文版位于Test Code的文件夹中的ULTRASONICTEST.ECP工程,看其示范怎样编写超声波传感器程序。,返回目录,超声波传感器Ultrasonic Sensor,超声波传感器程序范例: 编程时,模块需要放三次到编程区,第一次选择开始,第二次选择预设,第三次选择取值。 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入两个超声波检测模块

24、,第一个选择开始,第二个选择取值;接着拖入一个当循环模块对当前超声波变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个超声波检测模块,属性和当循环外面设置取值的那个超声波取值模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块; 程序功能:当 a20即是当前超声波和障碍物的距离没有达到20时,就不停的启动马达1正转,反之a=20则是超声波与障碍物之间的距离达到20和20以内时,就跳出当循环,停止马达1。,返回目录,如发现超声波第一次检测很好,而第二次检测就不准确了可尝试在第一次检测后在加上一个超声波模块,属性设置为停止,起到清空它检测后的数据

25、的作用,7、角度传感器Potentiometer Kit,这是一个测量角度的传感器,它是一个模拟传感器,主要是用来控制伺服电机转动角度,可以替代伺服器,并比伺服器的角度要精确,它基本上不受电量的影响,也不受传动结构的限制,在某些场合可以替代编码器或者伺服器的功能,它需要与马达、伺服电机、传动结构用轴连接在一起使用,其转动的角度大约是260度,主要可以用在一些只需要转动一定角度的机械结构中。 角度传感器由于是一个模拟传感器,它的编程模块在VEX2.0中文版中可以使用光敏传感器模块、寻线传感器模块以及模拟输入模块来进行编程,通道是插模拟/数字口的模拟口(默认14)。 经测试,它在软件里面显示的数值

26、是一组数据,其范围是0到1023,在实际编程的时候由于马达有一定的惯性,所以最好不要设置单个的数据,这样通常会转过设置的数值,所以一般都设置一个范围,如小于某个数值的时候,让马达转或停,大于该数值让马达停或转,这样就能很好的应用该传感器。 把角度传感器标有VEX字样的一面正对自己,然后顺时针转动它的中心孔,此时的数值是由小变到大,逆时针转动则为由大变到小。 该传感器具有记忆功能,比如把中心孔转动到数值500的位置,关闭电源,只要它的中心孔位置不变,无论什么时候再次打开电源,它的数值仍是500,即使更换它的通道数值也不变;如调到数值500,关闭电源,再转动了它的孔的位置,那么在打开电源后,它的数

27、值就不再是500,而是你当前位置的数值,这个数值通过屏幕输出可以测试到。,返回目录,角度传感器Potentiometer Kit,角度传感器程序范例: 首先把角度传感器插在模拟端口1,定义一个类型为int的变量a; 接着放入巡线模块设置通道和选择变量a; 然后放入当循环,设置a小于200,在当循环里面放入马达1正转,在次赋值,在当循环外面放一个停止马达; 程序功能:角度传感器的值小于200就启动马达1正转,大于等于200就停止马达1;,返回目录,8、数字输入 Digital Input,1.选择端口,一般默认为数字/模拟口510,2.选择选择预先定义好的变量,数字输入 Digital Inpu

28、t模块可以代替所有数字式的传感器模块,返回目录,9、模拟输入 Analog Input,1.选择端口,一般默认为数字/模拟口14,2.选择选择预先定义好的变量,模拟输入 Analog Input 模块可以代替所有模拟式的传感器模块,返回目录,九、Outputs主控输出,返回目录,1、马达控制 Motor Module,1.选择马达连接在主控器上的端口,2.选择255表示马达以最快的速度正转,3.选择127表示马达以停止,4.选择0表示马达以最快的速度反转,5.选择用户自定义则表示用户自己设置马达的速度0127之间的数字都是反转,越接近127速度越慢,127255之间的数字都表示正转,越接近12

29、7速度越慢,6.设置好以后点确定,马达的输出轴正对自己,顺时针表示正转,逆时针表示反转; 箭头图标向上暗示马达正转。 箭头图标变成一个黄色的点暗示马达停止。 箭头图标向下暗示马达反转。,返回目录,马达控制 Motor Module,马达控制编程范例1:右边每一个模块的属性在后面的注释里面都有说明 首先拖入一个马达模块,选择正转,再拖入一个悬空等待模块,设置为1000,表示一秒,然后再拖入一个马达模块,选择停止; 程序功能:马达1正转一秒后停止。需要注意的是你启动了几个马达那么在停止的时候就要加多少个停止马达。,马达控制编程范例2:右边每一个模块的属性在后面的注释里面都有说明 首先拖入一个当循环

30、模块,条件设置为1,表示永远循环;然后再当循环里面拖入一个马达模块,选择正转; 程序功能:马达1永远正转。,返回目录,马达安装示意图,双马达小车,四马达小车,三马达小车,或,返回目录,马达方向辅助图表,返回目录,2、伺服控制 Servo Module,伺服器和马达有区别,马达能转动360度,而伺服器只能转动一定的角度,大约120度 伺服器的输出轴正对自己,顺时针表示正转,逆时针表示反转; 箭头图标向下暗示伺服器正转。 箭头图标变成一个黄色的点暗示伺服器停止。 箭头图标向上暗示伺服器反转。,1.选择伺服器连接在主控器上的端口,2.选择255表示伺服器正转最大的角度,3.选择127表示伺服器停止,

31、4.选择0表示伺服器反转最大的角度,5.选择用户自定义则表示用户自己设置伺服器的角度0127之间的数字都是反转,越接近127角度越小,127255之间的数字都表示正转,越接近127角度越小,6.设置好以后点确定,返回目录,伺服控制 Servo Module,伺服器控制编程范例: 右边每一个模块的属性在后面的注释里面都有说明 首先拖入一个伺服器模块,选择正转,再拖入一个悬空等待模块,设置为1000,表示一秒;然后再拖入一个伺服器模块,选择停止; 程序功能:伺服器1正转一秒后停止。 需要注意的是你启动了几个伺服器那么在停止的时候就要加多少个停止伺服器。,返回目录,马达、伺服器与离合器安装方法,离合

32、器:它是用来保护马达、伺服器内部的齿轮或电机,当外部扭力过强超过了马达、伺服器的承受能力,此时会首先损坏安装在马达或伺服器外部的离合器,从而起到保护马达或伺服器的作用。但缺点是安装不到位、松动等会导致连接在离合器外面的传动结构脱落或导致马达无法传动外部机械结构。,返回目录,马达、伺服器齿轮更换方法,返回目录,马达、伺服器齿轮更换方法,返回目录,3、数字输出 Digital Output,1.选择端口,默认为数字/模拟口1116,2.这里可自定义一个值也可选择预先定义好的变量,使用数字输出功能模块用来控制数字输出的状态。 你能够利用数字输出端口打开或者关闭像一个发光二极管或一个螺线管这样的设备。

33、 数字输出能够设置1或0固定的值,它同样能够设置成一个预先定义的变量。 缺省情况下所有的数字输出值设置为1(或者0),返回目录,数字输出 Digital Output,数值输出程序例子(输出数字信号来控制气缸伸缩): 由于气缸的动作就只有伸缩两个动作,所以它的状态可以用1和0来表示,我们用1表示它伸出去,0表示它缩回来; 首先用数字输出模块输出一个固定值1,控制气缸伸出去,如在后面加悬空等待,则可以控制气缸伸出去的时间,不设置时间则表示它一直伸出去; 同样输出一个0来控制气缸缩回来,如在后面加悬空等待,则可以控制气缸缩回来的时间,不设置时间表示它瞬间缩回来又伸出去,因气缸的初始状态是伸出去的,

34、所以它缩回来会马上伸出去,保持该状态; 接着永远循环进入遥控程序,把从控制器传给气缸插的端口11所得到的信号赋给变量a,接着由接收通道1的接收器接收由遥控器的1通道发出来的控制信号,并将该信号赋给a,传给控制器,通过控制器来控制气缸的伸缩; 程序功能:由于气缸的自动程序的两个模块之间没有其他程序隔开,且控制他们伸缩的两个模块后都没有加悬空等待,所以打开电源后气缸只迅速的伸缩就进入遥控程序了,如在自动的两模块之间有延时或其他程序则是先伸出去,在运行其他程序,在缩回来,在回位,当没按遥控器时,气缸会一直伸出去,如按遥控,气缸会缩回来;,返回目录,十、Program Flow程序流程控制,返回目录,

35、1、单向选择结构If,If-条件,汉语也称“如果”的意思,即如果满足设定的条件,那么就运行If模块所包含的程序,如果不符合设定的条件,它将跳过if条件语句的部分,运行其后面的程序模块。,1.选择变量,2.选择变量运算符号,3.设置变量的表达式,返回目录,单向选择结构If,If模块编程范例: 以编碰撞开关程序为例; 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,接着拖入一个当循环模块,条件设置为数字1,构成永远循环,然后拖入一个碰撞检测模块,再拖入If 模块,在if条件里面设置a=0,在if 语句里面拖入一个马达模块设置为正转和一个悬

36、空等待模块设置为2秒;然后停止马达; 程序功能:当碰撞开关碰到时马达一正转两秒,然后停止;当没碰到时则不运行任何程序。,返回目录,2、 Else-If嵌套选择结构模块,Else-If条件,必须与IF模块结合才能使用,表示和IF模块的条件相反,也可自定义条件,1.选择变量,2.选择变量运算符号,3.设置变量的表达式,返回目录,3、 Else模块,Else条件,必须与IF模块结合才能使用,默认表示和IF模块的条件相反,不能自定义条件,1.只能注释,返回目录,4、双向选择结构 If-Else,IF-Else既IF模块和Else模块的结合体,只要符合设定的条件,将运行if里面的程序。如果不符合设定的条

37、件, 它将跳过表达式IF条件部分,执行Else里面的程序 它只执行一次程序,没有循环功能,2.选择变量运算符号,1.选择变量,3.设置变量的表达式,返回目录,双向选择结构 If-Else,If-Else条件编程范例: 以编碰撞开关程序为例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,接着拖入一个当循环模块,条件设置为数字1,构成永远循环,然后拖入一个碰撞检测模块,再拖入If-Else模块,再if条件里面设置a=1,在if语句里面拖入一个马达模块设置为正转; 在else语句里面拖入一个马达模块设置为停止; 程序功能:当碰撞开关没碰

38、到时马达一正转,当碰撞开关碰到时就执行Else里面的停止马达,返回目录,3、当循环While Loop,只要符合设定的条件,当循环将不停的重复执行其语句内部的程序。如果不符合设定的条件,它将跳出循环,执行循环外部的模块。 给它设置条件时,它构成的时条件循环,即不满足条件的时候,它还能跳出该循环; 当把条件设置成数字1的时候,它则构成了一个永远循环,即永远都运行其内部的程序。 在遥控编程的时候需要用到永远循环。,1.选择变量,2.选择变量运算符号,3.设置变量的表达式,返回目录,当循环While Loop,当循环模块编程范例1: 以编碰撞开关程序为例: 右边每一个模块的属性在后面的注释里面都有说

39、明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个碰撞检测模块,再拖入当循环模块,条件里面设置a=1,表示碰撞开关处在断开的状态,在当循环里面拖入一个马达模块设置为正转,再拖入一个碰撞检测模块,属性和当循环外面的碰撞检测模块的属性一样,; 在当循环外面拖入一个马达模块设置为停止; 程序功能:当碰撞开关没碰到时马达一正转,直到碰撞开关碰到时,马达1才停止,返回目录,当循环While Loop,当循环模块编程范例2: 右边每一个模块的属性在后面的注释里面都有说明 首先拖入当循环模块,在当循环条件里面输入数字1,表示永远循环运行当循环内部册程序;在当循环里面拖入一个马达模

40、块设置为正转; 程序功能:马达1永远正转,返回目录,4、多次循环For Loop,1.选择变量,并设置变量的初始值,如变量是a,初始值为0,那么这里就该设置:a=0,2.设置循环次数,表示需要运行FOR语句里面的程序多少次,如变量是a,要循环运行一段程序10次,那么这里就该设置:a=10,3.选择运算符号,这里选择+,意思是:使变量做自加运算,即变量运行完一次,便在原来的基础上在加1,加1以后,程序就会在运行一次,直到运行完前面设置的10次,它才停止自加运算;如变量是a,那么这里里就该设置:a+,返回目录,多次循环For Loop,多次循环For Loop模块编程范例: 右边每一个模块的属性在

41、后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个FOR模块,条件设置为for条件设置为 a = 0; a = 3; a + ,表示变量a初始值为0,做自加运算,直到a的值等于3才跳出for条件;接着拖入一个悬空等待模块,设置为2秒,最后拖入一个马达模块,停止马达1; 程序功能: 马达1正转6秒后停止,返回目录,5、定时器Timer,定时器Timer 相当于一个预先放置在主控器内部的时间传感器,它需要预先定义变量才能使用,它既可以控制马达的启动时间,也可控制程序的执行时间,悬空等待模块只能控制马达的启动时间; 定时器的单位为毫秒 100表示0.1

42、秒 1000表示1秒 10000表示10秒 以此类推,1.选择开始,“开始”命令定时器开始计时。,2.选择定时器的编号,返回目录,定时器Timer,3.选择预设,“预设”命令允许用户给定时器预设一个固定的值或预先定义好的变量。,6.选择取值,“取值”命令允许用户把来自定时器的反馈值赋给一个变量。,4.选择编号,5.选择变量,7.选择编号,8.选择变量,返回目录,定时器Timer,定时器Timer编程范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义变量a和变量b,然后拖入一个定时器模块选择开始,赋值给变量a;接着拖入一个定时器模块,选择预设,

43、赋值给变量a;在拖入一个定时器模块,选择取值,赋值给变量a;然后拖入一个当循环模块,条件设置为a=5000表示定时器变量小于等于5秒,当循环里面拖如一个马达模块,正转1秒,然后停止1秒,最后在次赋值; 程序功能:定时器时间小于等于5秒就执行其内部的马达正转1秒然后停止1秒,当定时器的时间大于5秒时就跳出当循环,返回目录,6、悬空等待Wait,悬空等待模块,在指定的时间段里,延长上一个模块的执行时间。这段时间以微秒计时。 一般用来延续马达和伺服器的启动时间 即 100表示0.1秒 1000表示1秒 10000表示10秒 以此类推,返回目录,悬空等待Wait,悬空等待Wait模块编程范例: 右边每

44、一个模块的属性在后面的注释里面都有说明 以编马达为例, 首先拖入一个马达模块,设置为正转;然后拖入以个悬空等待模块,设置为3秒,最后拖入一个马达模块设置为停止; 程序功能:马达1正转3秒停止。,返回目录,7、表达式赋值Assignment,表达式赋值Assignment模块相当于一个通用模块,你可以在里面输入任何条件对变量进行运算或者输入任何代码来代替任何模块的功能; 你能够为一个变量设置一个明确的值,例如: bumper=0 你能够定义一个数学表达式,例如: x + y=z,返回目录,8、中断Break,中断模块功能常用在当循环或者IF条件中,表示当程序运行到中断模块处,不管它后面还有没有模

45、块,或者不管满不满足条件,它都会跳到当循环或IF条件的后面,执行它们后面的程序,只能对该模块做对你修改和查阅程序有帮助的注释说明,返回目录,中断Break,中断Break编程范例1: 右边每一个模块的属性在后面的注释里面都有说明 虽然程序一开始设置的是一个永远循环,理论上是永远都运行当循环里面的程序,永远都跳不出来,但是加了中断模块以后,程序的功能就变化了; 程序功能:程序进入当循环,启动马达1正转2秒,然后停止2秒,接着就马上中断当循环条件,跳到当循环的下面,执行下面的马达1反转1秒,然后停止。,返回目录,中断Break,中断Break编程范例2: 右边每一个模块的属性在后面的注释里面都有说

46、明 虽然程序一开始设置的是一个永远循环,理论上是永远都运行当循环里面的程序,永远都跳不出来,但是加了中断模块以后,程序的功能就变化了; 程序功能:程序进入当循环,检测碰撞,如果碰撞没碰到,就启动马达1正转,如果碰撞开关闭合,程序就马上中断当循环条件,跳到当循环的下面,执行下面的马达1反转1秒,然后停止。,返回目录,9、继续Continue,继续Continue:跳到循环的条件判断处,从新判断,只能对该模块做对你修改和查阅程序有帮助的注释说明,返回目录,继续Continue,继续Continue模块编程范例: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)

47、里面定义了一个变量a,首先拖入一个碰撞检测模块,然后拖入一个当循环模块,设置为a=1,表示碰撞开关断开,然后拖入一个马达模块,设置为正转,在拖入一个悬空等待模块,设置为3秒,在停止马达,在拖入一个继续模块,然后拖入马达,设置为反转,延时3秒,然后停止; 程序功能:当碰撞开关没碰到的时候就进入循环,然后马达1正转3秒停止,接着就跳到当循环的条件判断处,从新判断,而不执行继续模块后面的马达1反转3秒这段程序。,返回目录,10、返回Return,返回模块的功能是跳到程序的结尾处,不管它后面有没有程序,它都不执行,直接跳到程序的结束位置,只能对该模块做对你修改和查阅程序有帮助的注释说明,自定义代码,返

48、回参数,返回目录,返回Return,返回Return编程范例: 右边每一个模块的属性在后面的注释里面都有说明 虽然程序一开始设置的是一个永远循环,理论上是永远都运行当循环里面的程序,永远都跳不出来,但是加了返回模块以后,程序的功能就变化了; 程序功能:程序进入当循环,启动马达1正转3秒,接着就马上执行返回模块,跳到程序的结束位置。当循环外面的程序也不会执行了。但由于在返回前面没有停止马达1,所以返回执行以后,马达1仍然会继续转动。,返回目录,11、屏幕输出Print To Screen,屏幕输出模块(Print To Screen)主要是用来显示用户需要检测的和主控器连接在一起的电子元件的当前

49、参数; 打开VEX编程软件英文版的安装目录:一般默认的路径是C:Program FilesIntelitek;快速找到它的安装位置的方法是在桌面右键点击VEX编程软件的图标属性快捷方式查找目标; 接着打开ProjectsProjectsTest Code这个文件夹就可以查看如何使用屏幕输出模块(Print To Screen)进行编程;接着把要检测的传感器的程序下载到主控器,在不关闭主控器电源并且下载线也和主控器相连接的情况 下,点击 图标 然后该窗口里面就可以显示出主控器的端口从当前电子元件获得的参数值。,1.设置要显示在屏幕输出窗口上的内容,如定义的变量为a,那么就可以输入a=,那么显示的

50、时候等号后面的数值就是检测到的值,返回目录,屏幕输出Print To Screen,2.选择屏幕输出模块要检测的变量,既是说要把哪一个变量的值显示到屏幕上,3.选择格式,这一项是具有C语言编程经验的用户的一个选项。对于大多数的用户只需要选择%d。,4.选择类型,这一项也是具有C语言编程经验的用户的一个选项。对于大多数的用户只需要选择int。,返回目录,5.输入需要在屏幕上显示的内容,在显示多个变量时,这里输入的内容可以起到区别各个变量的显示值的作用。,屏幕输出Print To Screen,返回目录,6.把程序下载到控制器,并让下载线与控制器保持连接,电源保持打开;,7. 点下载窗口上的终端,

51、该窗口会显示出当前传感器的状态或检测到的值,8.如果看不清楚显示的值,可以点这里的停止按钮,要继续检测仍点开始按钮,后面的清除按钮为清空当前窗口内的数据,屏幕输出Print To Screen,屏幕输出Print To Screen模块编程范例1: 右边每一个模块的属性在后面的注释里面都有说明 首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个当循环模块,条件为数字1,然后在当循环里面拖入一个碰撞检测模块,选择变量a,然后拖入一个屏幕输出模块,屏幕输出模块的变量为预先定义的变量a,格式一般为%d,类型为int,输出内容为a= 把该程序下载到主控器后,保持主控器电源为打开

52、,并且下载线和主控器连接正常,然后点终端,就可以显示当前碰撞检测到的数据,返回目录,12、程序注释Comment,对程序做对你修改和查阅有帮助的说明或注释,中文版1.0不能中文注释,英文版1.0和2.0可以中文注释,中文2.0可以中文注释; 源码注释被编译器忽略。,返回目录,13、自定义代码User Code,自定义代码User Code: 可以替代任何模块,比如马达模块的代码是SetMotor ( 1 , 255 ) ;那么只要在自定义代码User Code模块里面键入马达的代码,那么它就表示一个马达模块; 这个模块为熟悉C语言的用户设计。为了编译器能够正确编译代码,你必须正确使用语法。对于

53、C 语言的信息请自行参阅C 语言的相关指导书。,键入自定义的代码,返回目录,十一、RC Control遥控通道控制,返回目录,1、遥控器按键说明,返回目录,1,2,3,4,5,6,7,8,9,10,11,插晶体,打开电池盖这里放电池,插线控连接线,遥控器及接收器晶体连接示意图,返回目录,遥控器线控连接示意图,返回目录,2、遥控接收器接法示意图,这里插晶体,返回目录,遥控接收器连接示意图,返回目录,3、遥控最优系统搭配,使用两个遥控器同时控制不同的机器人时,你必须使用两种不同频率的RF晶体。在基本套装里只有一种频率的晶体;在晶体升级套装里可以获得更多的不同频率的晶体。,返回目录,遥控最优系统搭配

54、,返回目录,4、遥控器的基本操作,遥控器的操控杆是有两种模式配置的. 请看以下指示来查看或转换: (1) 把遥控器的开关推到ON的位置来启动遥控器 (2) 同时按下Mode 及 Select 钮直至液晶屏显示出菜单画面为止. (3) 按Mode钮直到有”Drive”字出现在液晶屏的左方(是最后的菜单)来进入驱动模式调节菜单. (4) 目前的设定会显示在液晶屏里, 显示内容是”23”或”12”. 你利用LCD右边的数据输入按钮“+ ”或“ ”推上或推下来转换模式.。 一般不建议用户随意调整,以免设置错乱造成无法正常遥控,使用默认的配置即可;,返回目录,5、单杆控制双马达Arcade-2 moto

55、r,单杆控制双马达 指的是遥控器的一个操纵杆控制两个马达同时转或同时停,这样两个马达转动的速度不论快慢,都是一致的,就不会因为手的力量问题而使两个马达转动的速度不一样,1.这里一般选自动,2.选择遥控器控制小车前进后退的控制通道,3.选择遥控器控制小车左右转弯的控制通道,4.选择小车左右马达连接在主控器上的通道,5.选择小车左右马达转动的正反方向,返回目录,单杆控制双马达Arcade-2 motor,单杆控制双马达编程范例: 首先拖入一个当循环模块,条件设置为1,构成一个永远循环,这样使它永远都检测遥控器发射出来的信号; 然后在当循环里面拖入一个单杆控制双马达模块,前进后退选择1,旋转选择3,

56、马达通道则选择1和2; 程序功能:遥控器控制马达1和2同时转动;遥控器的1通道控制前进后退;遥控器的3通道控制旋转,返回目录,6、单杆控制四马达Arcade-4 motor,单杆控制四马达 指的是遥控器的一个操纵杆控制四个马达同时转或同时停,这样四个马达转动的速度不论快慢,都是一致的,就不会因为手的力量问题而使四个马达转动的速度不一样,1.这里一般选自动,2.选择遥控器控制小车前进后退的控制通道,3.选择遥控器控制小车左右转弯的控制通道,4.选择小车左右马达连接在主控器上的通道,5.选择小车左右马达转动的正反方向,返回目录,单杆控制四马达Arcade-4 motor,单杆控制四马达编程范例:

57、首先拖入一个当循环模块,条件设置为1,构成一个永远循环,这样使它永远都检测遥控器发射出来的信号; 然后在当循环里面拖入一个单杆控制四马达模块,前进后退选择1,旋转选择3,马达通道则选择1、2、3、4; 程序功能:遥控器控制马达1、2、3、4同时转动,遥控器的1通道控制前进后退,遥控器的3通道控制旋转,返回目录,7、双杆控制双马达Arcade-2 motor,双杆控制双马达 指的是遥控器的两个操纵杆控制两个马达转或停,这样两个马达转动的速度不论快慢,都有可能不一致,就会因为手的力量问题而使两个马达转动的速度不一样,1.这里一般选自动,2.选择遥控器控制小车左边马达的控制通道,3.选择遥控器控制小

58、车右边马达的控制通道,4.选择小车左右马达连接在主控器上的通道,5.选择小车左右马达转动的正反方向,返回目录,双杆控制双马达Arcade-2 motor,双杆控制双马达编程范例: 首先拖入一个当循环模块,条件设置为1,构成一个永远循环,这样使它永远都检测遥控器发射出来的信号; 然后在当循环里面拖入一个双杆控制双马达模块,左马达选择1,右马达选择3,马达通道则选择1和2; 程序功能:遥控器控制马达1和2转动,遥控器的1通道控制马达1,遥控器的3通道控制马达2,返回目录,8、双杆控制四马达Arcade-4 motor,双杆控制四马达 指的是遥控器的两个操纵杆控制四个马达转或停,即一个操纵杆控制两个

59、马达; 这样四个马达转动的速度不论快慢,都有可能不一致,就会因为手的力量问题而使四个马达转动的速度不一样,1.这里一般选自动,2.选择遥控器控制小车左边两个马达的控制通道,3.选择遥控器控制小车右边两个马达的控制通道,4.选择小车左右马达连接在主控器上的通道,5.选择小车左右马达转动的正反方向,返回目录,双杆控制四马达Arcade-4 motor,双杆控制四马达编程范例: 首先拖入一个当循环模块,条件设置为1,构成一个永远循环,这样使它永远都检测遥控器发射出来的信号; 然后在当循环里面拖入一个双杆控制四马达模块,左马达选择1,右马达选择3,马达通道则选择1、2、3、4 ; 程序功能:遥控器控制马达1、2、3、4转动;遥控器的1通道控制马达1、2,遥控器的3通道控制马达3、4,返回目录,9、单杆控制单马达Motor Module Rx,单杆控制单马达 指的是遥控器的一个操纵杆控制一个马达转或停,1.这里一般选自动,2.选择遥控器控制马达的控制通道,3.选择马达连接在主控器上的通道,4.选择马达转动的正反方向

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论