FRC极限抛射程序使用说明Word文件下载.docx

上传人:b****6 文档编号:19838312 上传时间:2023-01-10 格式:DOCX 页数:12 大小:536.23KB
下载 相关 举报
FRC极限抛射程序使用说明Word文件下载.docx_第1页
第1页 / 共12页
FRC极限抛射程序使用说明Word文件下载.docx_第2页
第2页 / 共12页
FRC极限抛射程序使用说明Word文件下载.docx_第3页
第3页 / 共12页
FRC极限抛射程序使用说明Word文件下载.docx_第4页
第4页 / 共12页
FRC极限抛射程序使用说明Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

FRC极限抛射程序使用说明Word文件下载.docx

《FRC极限抛射程序使用说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《FRC极限抛射程序使用说明Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

FRC极限抛射程序使用说明Word文件下载.docx

场控的版本设置,在比赛时候要根据组委会要求的版本进行设置,平时操控机器人时不必设置。

右侧可以设置练习时,自动阶段等比赛时间。

5、左侧第四个按钮,用来调整USB接口。

通常电脑上接第一个摇杆时会默认为0,第二个会识别为1,依次类推。

如果识别过一次,以后再接时,通常会根据手柄摇杆类型自动识别到对应的端口上。

需要注意的是,此处摇杆及手柄的端口号,必须与程序中一致,才可以控制。

为避免使用时,由于插拔或自动识别的先后顺序而导致的接口与程序中书写的不一致从而造成手柄失灵。

可通过此面板用鼠标拖拽手柄到正确的端口号上,而不用更改程序代码。

6、左侧最后一个按钮,通常不会用到大家自行体会下即可。

7、中间面板显示了

当前操控机器人的队伍编号。

Communications\RobotCode\Joysticks三个指示灯分别代表着场控与机器人的连接状态,机器人中是否有代码,摇杆是否连接。

红色代表非正常状态,如果上述三项都正常,则为绿色。

7、最右侧面板,为系统的日志,通常使用中如出现异常会在此处显示相应的信息说明,请自行体会。

二、编程软件Eclipse的使用说明:

1、双击Eclipse软件图标

,启动软件

2、选择菜单栏上,File->

New->

Project

在弹出的NewProject对话框中

选择WPLibRobotC++Project中的ExampleRobotC++Project,

单击Next在弹出的对话框中选择GettingStartedwithC++中的GettingStarted,单击Next

在ProjectName中,修改项目名称(GettingStarted)为自己定义的英文名称,这里最好不要起中文项目名称,例如MyRobot。

单击Finish按钮,完成项目创建

3、在左侧项目管理窗口中,选择刚刚新建的项目MyRobot(上面刚起的名字),双击点击src文件夹,找到Robot.cpp,双击打开

看到右侧窗口中为初始化实例代码。

按住Ctrl+A,全选。

Delete删除所有代码,将我提供的代码全选(Ctrl+A)复制(Ctrl+C)粘贴(Ctrl+V)进去。

4、选择菜单栏上的Window->

Preferences

在弹出的对话框中选择最后一项WPILibPreferences,在右侧TeamNumber中输入队伍编号,例如5601,在ToolsVersion中选择sfx-2014.11.01通常就这一个版本可供选择。

单击OK

5、选择左侧刚新建的项目名称MyRobot,右键单击鼠标,选择BuildProject,对代码进行编译形成计算机可以识别的可执行文件

此过程中如果代码存在错误,下方会有提示,更正你的代码后,重复执行编译操作,直到成功。

6、编译成功的程序可上传到RobRio中,前提是要保证电脑、路由、场控三者之间建立无线连接状态正常。

上传程序步骤如下:

选择左侧刚新建的项目名称MyRobot,右键单击鼠标,选择RunAs->

2WPILibC++Deploy

等待上传完成,上传过程中如果场控开启,会开到场控的代码指示灯会变红一下,说明正在复制新代码。

代码复制成功后场控的代码指示灯会变回绿色,说明代码已经传到你的机器人核心里去了。

同时,Eclipse也能看到提示是否代码上传成功。

三、FRC极限抛射程序中端口及按键的使用说明:

1、万向轮PWM信号接口:

左前轮2、左后轮3、右前轮1、右后轮0

2、操纵杆USB接口:

摇杆使用端口0、手柄使用端口2

3、按键使用:

气动使用5、6、7按键

发射电机启动停止使用1、4按键(暂时未使用)

装弹使用8按键

4、限位开关DIO接口:

5、发射电机PWM信号接口:

4,6端口,插一个即可,颠倒4、6可变更电机转向

6、装弹电机PWM信号接口:

7,8端口,插一个即可,颠倒7、8可变更电机转向

7、气动装置接口:

0,1,2,如果接两个可以试验0,1或0,2

四、抛射示例代码:

代码中已经全部用中文做了注释说明,读者可根据机器人实际情况进行适当编辑修改。

直接复制使用时,需注意复制粘贴过程可能出现格式变化,从而造成不符合C++语法,如果编译过程中出现错误,请自行调整。

#include"

WPILib.h"

/**

*此程序描述了如何使用万向轮控制机器人.

*/

classRobot:

publicSampleRobot

{

//万向轮端口

conststaticintfrontLeftChannel=2;

conststaticintrearLeftChannel=3;

conststaticintfrontRightChannel=1;

conststaticintrearRightChannel=0;

//摇杆端口

conststaticintjoystickChannel=0;

conststaticintjoystickChannel1=1;

//定义一个机器驱动对象及摇杆对象,用于控制机器人行驶方向

RobotDriverobotDrive;

//万向轮的四个电机使用的对象

Joystickstick;

//操控万向轮的摇杆

//定义第二个机器驱动对象及手柄对象,用于控制发射电机及气动装弹装置

RobotDriverobotDrive1;

//此对象为发射电机

Joystickstick1;

//操控发射及装弹、气动的手柄

RobotDriverobotDrive2;

//此对象为装弹电机

//更新周期为5毫秒

constdoublekUpdatePeriod=0.005;

//用于控制气动装置的按钮编号

constintkSolenoidButton=5;

//气动复位装弹装置

constintkDoubleSolenoidForward=7;

constintkDoubleSolenoidReverse=6;

//气动推动装弹

//constintstart=1;

//发射电机装置转动

//constintclose=4;

//发射电机装置停止

constintshot=8;

//装弹装置按键

Solenoidm_solenoid;

//定义一个气动装置对象

//创建一个对象,对应双向电磁阀

DoubleSolenoidm_doubleSolenoid;

DigitalInputlimitSwitch;

//定义一个限位开关对象

boolPosition;

//定义一个布尔型变量用来接收限位开关的信号

intx;

inty;

public:

Robot():

robotDrive(frontLeftChannel,rearLeftChannel,

frontRightChannel,rearRightChannel),//必须与上面声明的一致

stick(joystickChannel),

robotDrive1(4,6),

stick1(joystickChannel1),

robotDrive2(7,8),

m_solenoid(0),//气动装置用0信道

m_doubleSolenoid(1,2),//双向电磁阀用1和2控制前后

limitSwitch(0),//初始化限位开关端口DIO口

x

(1),

y

(1)

{

robotDrive.SetExpiration(0.1);

robotDrive.SetInvertedMotor(RobotDrive:

:

kFrontLeftMotor,true);

//转换左边的发动机

kRearLeftMotor,true);

//你可能需要更改或删除此部分去匹配你的机器人装置

}

/**

*RunsthemotorswithMecanumdrive.

voidOperatorControl()

robotDrive.SetSafetyEnabled(false);

//电机的安全控制

while(IsOperatorControl()&

&

IsEnabled())

{

robotDrive1.Drive(-1,0);

//旋转发射装置,速度由地一个参数控制,正负可调节转向

//用摇杆的X轴控制横向运动,Y轴控制前后运动,Z轴控制旋转

//此实例中不使用面向领域的驱动器,所以该陀螺仪输入为0

robotDrive.MecanumDrive_Cartesian(stick.GetX(),stick.GetY(),stick.GetZ());

Wait(kUpdatePeriod);

//等候5毫秒以避免占用CPU周期

/*发射装置控制,注销掉暂时调整为一直处于待发射状态

if(stick1.GetRawButton(start)&

stick1.GetRawButton(close))//当发射启动按键和停止按键同时被按下时则发射电机停止,已做保护

{

robotDrive1.Drive(0,0);

//速度及电机转向,旋转角度

//定义发动机延迟时间,否则带着转数会不直线

}

elseif(stick1.GetRawButton(close))

//暂停发射

//等候5毫秒以避免占用CPU周期

elseif(stick1.GetRawButton(start))

//反向旋转发射装置

else

*/

Position=limitSwitch.Get();

//获取限位开关信号

y=1;

while(y)

if(Position&

x%2==1)

{

robotDrive2.Drive(0,0);

if(stick1.GetRawButton(shot))

x++;

}

x%2==0)

robotDrive2.Drive(0.5,0);

if(!

Position)

robotDrive2.Drive(0.5,0);

y=0;

}

m_solenoid.Set(stick1.GetRawButton(kSolenoidButton));

//气动复位按键

//为了设置使用双向电磁阀,如果没有按下按钮他处于关闭的,如果只按下一个按钮,舍得的电磁阀对应于该按钮,如果两者都按下设置电磁阀向前

if(stick1.GetRawButton(kDoubleSolenoidForward))//kDoubleSolenoidForward2

m_doubleSolenoid.Set(DoubleSolenoid:

kForward);

elseif(stick1.GetRawButton(kDoubleSolenoidReverse))//kDoubleSolenoidReverse3手臂收缩

kReverse);

else

m_doubleSolenoid.Set(DoubleSolenoid:

kOff);

Wait(kUpdatePeriod);

};

START_ROBOT_CLASS(Robot);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1