VEX 机器人软件编程教程.docx
- 文档编号:27020967
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:52
- 大小:4.17MB
VEX 机器人软件编程教程.docx
《VEX 机器人软件编程教程.docx》由会员分享,可在线阅读,更多相关《VEX 机器人软件编程教程.docx(52页珍藏版)》请在冰豆网上搜索。
VEX机器人软件编程教程
VEX机器人软件编程教程
一、使用注意事项
v如果是没有购买序列号的用户,安装了软件,打开软件时会弹出一个注册的窗口,中文版点暂不注册按钮便可以试用。
英文版点RuninEvaluationMode按钮便可试用;英文1.0版试用30天,英文2.0版只能试用7天;中文2.0版15天;
v如果是购买了序列号的用户,在注册的时候需要联网注册,每个序列号也只能在一台电脑上使用,英文版如果换了电脑再使用该序列号注册,那么该系列号就不可用了,2.0中文版一个序列号也只能一台电脑注册,如要换电脑注册可以点菜单栏→帮助→注销,然后在另一台电脑上就可以再次使用该序列号了;
v如果是没有购买序列号的用户,只要一装上软件,便自动与系统硬件绑定,试用期到了以后即使把软件卸载了在重装也不能继续试用,建议先用备份工具备份系统,然后才安装中英文版软件,这样软件过期了以后,只需要把系统还原,在重装VEX软件即可继续试用;
v英文版软件比中文1.0版软件稳定,中文1.0版软件存在一些错误,不建议使用中文1.0版;
vVEX编程软件有中文版和英文版两个版本(中文和英文分别都有1.0版本和2.0版本),两个版本不能混用,不要既下载中文版编的程序到主控器,又下载英文版编的程序到主控器,这样会损坏主控器的底层程序,严重时会导致主控器的某些芯片不可用,从而导致主控器不能使用;
v中文版和英文版的程序和代码都不能用对方的的软件相互打开编辑
v中文1.0版软件编好的程序不能保存到C盘(包括桌面),否则会导致程序不能打开或者出现错误;中文2.0版电脑的任何地方都可以保存,以文件夹的形式保存,注意在同一个程序文件夹下不能在保存别的程序,否则在打开程序时会出错并关闭自动关闭;
v中文1.0版软件在每次下载程序之前都要先保存→编译→链接→然后再下载,然后选择端口;
v查看下载线使用的COM口的方法是:
我的电脑→右键→属性→硬件→设备管理器→端口(COM和LPT)→ProlificUSB-to-SerialCommPort(com3)最后这一项的com3就是当前VEX下载线使用的端口;然后在软件里面选择你查看到的端口即可下载程序到主控器,具体方法后面有详细介绍;
v2.0中英版软件可以定义子程序,1.0中英版软件不能定义子程序;
v2.0中英版软件中可以定义全局变量和局部变量,1.0中英版的软件所有变量都是全局变量;
v1.0中英版软件没有中断、继续、返回模块,2.0中英版软件中有。
v当主控器出现执行程序混乱的情况时,说明有可能是主控器的底层程序不正常,那么只需要从新下载一次底层程序即可,中文版2.0为:
菜单栏:
生成→下栽初始化程序。
二、主界面
三、工具栏模块(英文版)
四、编程区
v对于1.0版每一个新的程序都会有一个I/O定义模块,变量定义模块(Variables),开始模块(BEGNI)和结束模块(END)。
2.0版则增加了局部变量定义模块。
vI/O模块、全局变量定义模块、局部变量定义模块应当在开始编程之前定义。
v在每一个程序里,开始模块表示程序的第一个模块;结束模块表示程序的最后一个模块。
你必须放置所有的模块在这两个模块之间。
v插入模块:
在模块区用鼠标左键点住相应模块,拖动到编程区的开始和结束模块之间,放开鼠标,然后只要设置好模块的属性就行了。
需要说明的是传感器模块必须先定义其变量才能插入到编程区内。
v编辑模块(Edit):
左键双击修改,也可单击右键。
英文版是点右键,选择编辑。
v复制模块(Copy):
中文版2.0是ctrl+c复制模块,也可单击右键;英文版是按住ctrl键,拖拽模块,然后将复制的模块放到你需要放置的位置。
也可单击右键。
v剪切模块(Cut):
中文版2.0是ctrl+x剪切模块,也可单击右键;英文版是先选中模块,再点右键选择剪切。
v粘贴(Paste):
中文版2.0是ctrl+v粘贴模块,也可单击右键;英文版是点右键,选择粘贴。
v删除模块(Delete):
中文版2.0是Delete键删除模块,也可单击右键;英文版是点右键,然后选择删除。
v右键单击任何一个模块,可以对该模块进行编辑、复制、剪切、删除、粘贴等操作。
v编译下载:
F5为编译程序,F6为编译并下载程序
五、I/O定义模块
v双击I/O图标或点鼠标右键(I/O定义模块),你能够配置控制器的I/O端口。
v模拟/数字端口(共16个口)(ANALOG/DIGITAL):
波浪线表示模拟端口(默认为1~4),箭头表示数字端口;箭头向左的表示信号是由外部输入到主控器(默认为5~10),箭头向右的表示信号是由主控器内部输出(默认为11~16),模拟和数字端口可以互换,数字端口的输入输出也可以更改;
v中断端口(INTERRUPTS)(共6个口):
不能更改;
v马达端口(MOTORS)(共8个口):
不能更改;
六、变量设置模块(1.0版)
v双击变量设置图标,打开程序变量定义对话框。
你能设置程序需要使用到的变量;
v这里数据类型一般都选择int,
v变量名称需要是英文字母,其它的可以不填
也可以在变量取值处设置变量的值
全局变量设置模块(2.0版)
v
双击全局变量设置图标,打开程序变量定义对话框。
你能设置程序需要使用到的全局变量;
v这里数据类型一般都选择int,
v变量名称需要是英文字母,其它的可以不填
v也可以在变量取值处设置变量的值,也可以不设置。
局部变量设置模块(2.0版)
v双击局部变量设置图标,打开程序变量定义对话框。
你能设置程序需要使用到的局部变量;
v这里数据类型一般都选择int;
v变量名称需要是英文字母,其它的可以不填
v也可以在变量取值处设置变量的值
变量定义表
七、接口说明
接口
功能
马达端口MOTORS共有8个口
主控器上标有MOTORS字样的端口,用来接马达和伺服器
中断端口INTERRUPTS
共有6个口
主控器上标有INTERRUPTS字样的端口,用来接超声波传感器的OUTPUT端和编码器
模拟/数字端口ANALOG/DIGITAL共有16个口
主控器上标有ANALOG/DIGITAL字样的端口,默认1~4为模拟/数字通用端口,可接巡线、光敏、碰撞、行程,默认5~10为数字输出端口,可接碰撞、行程,默认11~16为数字输入端口,接超声波的Input端,都可以自行更改
指示灯说明
八、Inputs主控输入
1、碰撞开关传感器bumperswitch
v
碰撞开关是数字式的传感器。
v它有两种状态:
即开和关。
v当碰撞开关断开的时候,定义为1。
v当碰撞开关闭合的时候,定义为0。
v打开英文版位于TestCode的文件夹中的BUMPERTEST.ECP工程,看其示范怎样编写碰撞开关程序。
碰撞开关程序范例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个碰撞检测模块,接着拖入一个当循环模块对当前碰撞变量进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个碰撞检测模块,属性和当循环外面的碰撞检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块;
v那么这个程序的功能就是:
当a=1即是碰撞开关没碰到时,就不停的启动马达1正转,反之a=0则是当碰撞开关碰到时,就跳出当循环,停止马达1。
2、光敏传感器lightsensor
v
光敏传感器是模拟式的传感器,它是用来检测周围环境光线的亮暗的传感器;
v把光线由亮到暗的范围定义在0到1024。
值越小表示光线越亮,值越大表示光线越暗;
v打开英文版位于TestCode文件夹中的LIGHTTEST.ECP工程,看其示范怎样编写光敏传感器程序。
光敏传感器程序范例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个光敏检测模块,选择变量a,接着拖入一个当循环模块对当前亮度变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个光敏检测模块,属性和当循环外面的光敏检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块;
v那么这个程序的功能就是:
当a<800即是光线比较亮时,就不停的启动马达1正转,反之a>=800则是光线比较暗时,就跳出当循环,停止马达1。
3、限位开关limitswitch
v
限位开关是数字式的传感器。
和碰撞开关类似;
v它有两种状态:
即开和关;
v当限位开关断开的时候,定义为1
v当限位开关闭合的时候,定义为0
v打开英文版位于TestCode的文件夹中的LIMITTEST.ECP工程,看其示范怎样编写行程开关程序。
限位开关程序范例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个限位检测模块,接着拖入一个当循环模块对当前限位变量进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个限位检测模块,属性和当循环外面的限位检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块;
v那么这个程序的功能就是:
当a=1即是限位开关没闭合时,就不停的启动马达1正转,反之a=0则是当限位开关碰到时,就跳出当循环,停止马达1。
4、巡线传感器LineFollower
v
巡线传感器是模拟式的传感器,它是用来检测颜色的传感器;
v把颜色的深浅由白到黑的范围定义在0到1024。
值越小表示颜色越白,值越大表示颜色越黑;
v打开英文版位于TestCode的文件夹中的LINEFOLLOWER.ECP工程,看其示范怎样编写巡线传感器程序。
巡线传感器程序范例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个巡线检测模块,接着拖入一个当循环模块对当前灰度变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个巡线检测模块,属性和当循环外面的巡线检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块;
v那么这个程序的功能就是:
当a<800即是颜色比较白时,就不停的启动马达1正转,反之a>=800则是颜色比较黑时,就跳出当循环,停止马达1。
5、编码器OpticalShaftEncoder
v
编码器是一个数字式的传感器。
它能够用来测量和定义马达转动的圈数或者路程。
v编码器一般插在中断端口(INTERRUPTS)
v
编码器旋转(360度)等于90个编码脉冲。
v打开英文版位于TestCode的文件夹中的ENCODERTEST.ECP工程,看其示范怎样编写编码器程序。
编码器程序范例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入三个编码器检测模块,第一个选择开始,第二个选择预设,第三个选择取值;接着拖入一个当循环模块对当前路程变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个编码器检测模块,属性和当循环外面设置取值的那个编码器检测模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块;
v那么这个程序的功能就是:
当a<=30即是当前马达转动的路程没由达到30时,就不停的启动马达1正转,反之a>30则是马达转动的路程达到30时,就跳出当循环,停止马达1。
6、超声波传感器UltrasonicSensor
v超声波传感器利用高频率的声波来探测障碍物。
它发射一个超声波信号,声波被外界物体反射回来。
然后超声波传感器就可以根据接收到的信号的时间和强弱计算出离障碍物的距离
v
超声波传感器有两根连接线
v确保标有Output标签的线连接到主控器的中断端口。
v确保标有Input标签的线连接到主控器的数字输出端口(默认的为11~16)。
v超声波的取值范围是:
2~100
v小于2cm是超声波的盲区,在2cm以内就检测不到任何物体。
v打开英文版位于TestCode的文件夹中的ULTRASONICTEST.ECP工程,看其示范怎样编写超声波传感器程序。
超声波传感器程序范例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入两个超声波检测模块,第一个选择开始,第二个选择取值;接着拖入一个当循环模块对当前超声波变量(即变量a)进行判断,然后在当循环里面拖入一个马达控制模块,再拖入一个超声波检测模块,属性和当循环外面设置取值的那个超声波取值模块的属性一样,这样就构成了一个条件循环,最后在当循环外面在拖入一个马达控制模块;
v那么这个程序的功能就是:
当a>20即是当前超声波和障碍物的距离没有达到20时,就不停的启动马达1正转,反之a<=20则是超声波与障碍物之间的距离达到20和20以内时,就跳出当循环,停止马达1。
7、数字输入DigitalInput
v模块可以代替所有数字式的传感器模块
8、模拟输入AnalogInput
v
模块可以代替所有模拟式的传感器模块
九、Outputs主控输出
1、马达控制MotorModule
v马达的输出轴正对自己,顺时针表示正转,逆时针表示反转;
v箭头图标向上暗示马达正转。
v箭头图标变成一个黄色的点暗示马达停止。
v箭头图标向下暗示马达反转。
马达控制编程范例1:
v
首先拖入一个马达模块,选择正转,再拖入一个悬空等待模块,设置为1000,表示一秒,然后再拖入一个马达模块,选择停止;
v那么这个程序的功能为:
马达1正转一秒后停止。
需要注意的是你启动了几个马达那么在停止的时候就要加多少个停止马达。
马达控制编程范例2:
v
首先拖入一个当循环模块,条件设置为1,表示永远循环;然后再当循环里面拖入一个马达模块,选择正转;
v那么这个程序的功能为:
马达1永远正转。
马达方向辅助图表
2、伺服控制ServoModule
v
伺服器和马达有区别,马达能转动360度,而伺服器只能转动一定的角度,大约120度
v伺服器的输出轴正对自己,顺时针表示正转,逆时针表示反转;
v箭头图标向下暗示伺服器正转。
v箭头图标变成一个黄色的点暗示伺服器停止。
v箭头图标向上暗示伺服器反转。
伺服器控制编程范例:
v
首先拖入一个伺服器模块,选择正转,再拖入一个悬空等待模块,设置为1000,表示一秒;然后再拖入一个伺服器模块,选择停止;
v那么这个程序的功能为:
伺服器1正转一秒后停止。
v需要注意的是你启动了几个伺服器那么在停止的时候就要加多少个停止伺服器。
3、数字输出DigitalOutput
v
使用数字输出功能模块用来控制数字输出的状态。
v你能够利用数字输出端口打开或者关闭像一个发光二极管或一个螺线管这样的设备。
v数字输出能够设置1或0固定的值,它同样能够设置成一个预先定义的变量。
v
缺省情况下所有的数字输出值设置为1(或者0)
十、ProgramFlow程序流程控制
1、单向选择结构If
If-条件,只要符合设定的条件,将运行if语句内部的程序。
如果不符合设定的条件,它将跳过表达式if条件语句的部分,运行下一个程序模块。
If模块编程范例:
以编碰撞开关程序为例;
v首先在变量定义模块(Variables)里面定义了一个变量a,接着拖入一个当循环模块,条件设置为数字1,构成永远循环,然后拖入一个碰撞检测模块,再拖入If模块,在if条件里面设置a=0,在if语句里面拖入一个马达模块设置为正转和一个悬空等待模块设置为2秒;然后停止马达;
v那么这个程序的功能为:
当碰撞开关碰到时马达一正转两秒,然后停止;当没碰到时则不运行任何程序。
2、Else-If嵌套选择结构模块
v
Else-If条件,必须与IF模块结合才能使用,表示和IF模块的条件相反,也可自定义条件
Else模块
v
Else条件,必须与IF模块结合才能使用,默认表示和IF模块的条件相反,不能自定义条件
双向选择结构If-Else
v
IF-Else既IF模块和Else模块的结合体,只要符合设定的条件,将运行if里面的程序。
如果不符合设定的条件,它将跳过表达式IF条件部分,执行Else里面的程序
v它只执行一次程序,没有循环功能
If-Else条件编程范例:
以编碰撞开关程序为例:
v
首先在变量定义模块(Variables)里面定义了一个变量a,接着拖入一个当循环模块,条件设置为数字1,构成永远循环,然后拖入一个碰撞检测模块,再拖入If-Else模块,再if条件里面设置a=1,在if语句里面拖入一个马达模块设置为正转;
v在else语句里面拖入一个马达模块设置为停止;
v
那么这个程序的功能为:
当碰撞开关没碰到时马达一正转,当碰撞开关碰到时就执行Else里面的停止马达
3、当循环WhileLoop
v
只要符合设定的条件,当循环将不停的重复执行其语句内部的程序。
如果不符合设定的条件,它将跳出循环,执行循环外部的模块。
v给它设置条件时,它构成的时条件循环,即不满足条件的时候,它还能跳出该循环;
v当把条件设置成数字1的时候,它则构成了一个永远循环,即永远都运行其内部的程序。
在遥控编程的时候需要用到永远循环。
当循环模块编程范例1:
以编碰撞开关程序为例:
v首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个碰撞检测模块,再拖入当循环模块,条件里面设置a=1,表示碰撞开关处在断开的状态,在当循环里面拖入一个马达模块设置为正转,再拖入一个碰撞检测模块,属性和当循环外面的碰撞检测模块的属性一样,;
v在当循环外面拖入一个马达模块设置为停止;
v那么这个程序的功能为:
当碰撞开关没碰到时马达一正转,直到碰撞开关碰到时,马达1才停止
当循环模块编程范例2:
v首先拖入当循环模块,在当循环条件里面输入数字1,表示永远循环运行当循环内部册程序;在当循环里面拖入一个马达模块设置为正转;
v那么这个程序的功能为:
马达1永远正转
4、多次循环ForLoop
多次循环ForLoop模块编程范例:
v
首先在变量定义模块(Variables)里面定义了一个变量a,然后拖入一个FOR模块,条件设置为for条件设置为a==0;a<=3;a++,表示变量a初始值为0,做自加运算,直到a的值等于3才跳出for条件;接着拖入一个悬空等待模块,设置为2秒,最后拖入一个马达模块,停止马达1;
v
那么该程序的功能为:
马达1正转6秒后停止
5、定时器Timer
定时器Timer
v
相当于一个预先放置在主控器内部的时间传感器,它需要预先定义变量才能使用,可以控制程序的执行时间,悬空等待只能延续马达的启动时间
v定时器的单位为毫秒100表示0.1秒
1000表示1秒
10000表示10秒
以此类推
定时器Timer编程范例:
v首先在变量定义模块(Variables)里面定义变量a和变量b,然后拖入一个定时器模块选择开始,赋值给变量a;接着拖入一个定时器模块,选择预设,赋值给变量a;在拖入一个定时器模块,选择取值,赋值给变量a;然后拖入一个当循环模块,条件设置为a<=5000表示定时器变量小于等于5秒,当循环里面拖如一个马达模块,正转1秒,然后停止1秒,最后在次赋值;
v这个程序的功能为:
定时器时间小于等于5秒就执行其内部的马达正转1秒然后停止1秒,当定时器的时间大于5秒时就跳出当循环
6、悬空等待Wait
v悬空等待模块,在指定的时间段里,延长上一个模块的执行时间。
这段时间以微秒计时。
即:
100表示0.1秒、1000表示1秒、10000表示10秒,以此类推
悬空等待Wait模块编程范例:
v以编马达为例,
v首先拖入一个马达模块,设置为正转;然后拖入以个悬空等待模块,设置为3秒,最后拖入一个马达模块设置为停止;
v
该程序的功能为:
马达1正转3秒停止。
7、表达式赋值Assignment
v表达式赋值Assignment模块相当于一个通用模块,你可以在里面输入任何条件对变量进行运算或者输入任何代码来代替任何模块的功能;
v你能够为一个变量设置一个明确的值,例如:
bumper=0
v你能够定义一个数学表达式,例如:
x+y=z
8、中断Break
v中断模块功能常用在当循环或者IF条件中,表示当程序运行到中断模块处,不管它后面还有没有模块,或者不管满不满足条件,它都会跳到当循环或IF条件的后面,执行它们后面的程序
中断Break编程范例1:
v虽然程序一开始设置的是一个永远循环,理论上是永远都运行当循环里面的程序,永远都跳不出来,但是加了中断模块以后,程序的功能就变化了;
v该程序功能为:
程序进入当循环,启动马达1正转2秒,然后停止2秒,接着就马上中断当循环条件,跳到当循环的下面,执行下面的马达1反转1秒,然后停止。
中断Break编程范例2:
v虽然程序一开始设置的是一个永远循环,理论上是永远都运行当循环里面的程序,永远都跳不出来,但是加了中断模块以后,程序的功能就变化了;
v该程序功能为:
程序进入当循环,检测碰撞,如果碰撞没碰到,就启动马达1正转,如果碰撞开关闭合,程序就马上中断当循环条件,跳到当循环的下面,执行下面的马达1反转1秒,然后停止。
9、继续Continue
v继续Continue:
跳到循环的条件判断处,从新判断
继续Continue模块编程范例:
v
首先在变量定义模块(Variables)里面定义了一个变量a,首先拖入一个碰撞检测模块,然后拖入一个当循环模块,设置为a=1,表示碰撞开关断开,然后拖入一个马达模块,设置为正转,在拖入一个悬空等待模块,设置为3秒,在停止马达,在拖入一个继续模块,然后拖入马达,设置为反转,延时3秒,然后停止;
v
该程序的功能为:
当碰撞开关没碰到的时候就进入循环,然后马达1正转3秒停止,接着就跳到当循环的条件判断处,从新判断,而不执行继续模块后面的马达1反转3秒这段程序。
10、返回Return
v
返回模块的功能是跳到程序的结尾处,不管它后面有没有程序,它都不执行,直接跳到程序的结束位置
返回Return编程范例:
v虽然程序一开始设置的是一个永远循环,理论上是永远都运行当循环里面的程序,永远都跳不出来,但是加了返回模块以后,程序的功能就变化了;
v
该程序功能为:
程序进入当循环,启动马达1正转3秒,接着就马上执行返回模块,跳到程序的结束位置。
当循环外面的程序也不会执行了。
但由于在返回前面没有停止马达1,所以返回执行以后,马达1仍然会继续转动。
11、屏幕输出PrintToScreen
v
屏幕输出模块(PrintToScreen)主要是用来显示用户需要检测的和主控器连接在一起的电子元件的当前参数;
v打开VEX编程软件英文版的安装目录:
一般默认的路径是C:
\ProgramFiles\Intelitek;快速找到它的安装位置的方法是在桌面右键点击VEX编程软件的图标→属性→快捷方式→查找目标;
v接着打开ProjectsProjects\TestCode这个文件夹就可以查看如何使用屏幕输出模块(PrintToScreen)进行编程;接着把要检测的传感器的程序下载到主控器,
在不关闭主控器电源并且下载线也和主控器相连接的情况下,点击图标
v然后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VEX 机器人软件编程教程 机器人 软件 编程 教程