提示:在继续阅读之前,请注意此文章最后更新于 2200 天前,其中的部分内容可能已经无效或过时。
VEX Robot C 入门教程 #1
rt,应老师要求,为了造福下届学弟学妹,特此写下此入门教程。(下届不是都用 V5 了吗(划掉)) 下面这篇教程相当于一个 Hello World 的例子,将通过程序驱动一个电机。
0x00 Robot C 程序结构
Robot C 中大部分基础语法与 C 语言相同,在此就不一一赘述了(其实是懒)。 一个简单的 Robot C 程序通常是以以下结构存在的:
#pragma config(blablablabla)
void fun(){
/*blablablabla*/
}
task main(){
/*blablablabla*/
}
其中 task 代表一个任务。Robot C 语言支持多任务,在后文中会对此进行介绍。 在将此程序烧写到主控盒后,程序会从 main() 任务开始执行。 在后面的教程中我将介绍有关 Robot C 的编程结构。
0x01 电机驱动
VEX EDR 主控共有十个电机端口,其中有八个为三线端口,其余两个为双线端口。 要通过程序控制电机,我们必须先配置电机。 在 Robot C 中,配置电机可以通过单击_Motor and Sensor Setup_按钮来配置,如图所示:
也可以通过以下代码来配置:
#pragma config(Motor, port2, left_front, tmotorVex393_MC29, openLoop, reversed)
配置完成后,即可开始编程来操控电机。
在 VEX Robot C 中,有一种十分方便的控制电机的方式,那就是 motor[] 数组。 通过使用motor[portX]
可以操控端口 X 电机的功率,其中赋值范围为 $$ [-127,127] $$ 。当赋值为负时,电机会反转。 比如,以下代码会使端口 2 的电机正转 1s 后反转 1s 最后停止。
motor[port2] = 127;//将电机 2 设置为最大功率正转
wait1Msec(1000);//此语句的作用为使主控盒延时 1000ms 再执行下面的语句
motor[port2] = -127;//将电机 2 设置为最大功率反转
wait1Msec(1000);
motor[port2] = 0;
以上就是控制电机的一种简单方法了,下面来让我们写一个完整的 VEX Robot C 程序。
#pragma config(Motor, port2, Left, tmotorVex393_MC29, openLoop)
task main(){
while(1){
motor[port2] = 127
wait1Msec(1000);
motor[port2] = -127;
wait1Msec(1000);
motor[port2] = 0;
}
}
0x02 编译 & 烧写程序
首先确保主控盒烧写了同 Robot C 同版本的固件。 将主控盒通过数据线连接至计算机后,待到主控盒两个 LED 灯变为绿色后,点击 Compile Program 对程序进行重新编译,然后点击 Download 按钮开始烧写程序。