380 likes | 521 Views
Vex Coaches' Training. October 12, 2013. Agenda for Today. 9 – 10 AM : Tina Reeves and the Engineering Notebook 10 – Noon : Finish Building, Basic Robot C 12-12:30 : Lunch 12:30 – 2:30 Basic Programs, Functions, Robot C Video Trainer, Setting up Competition Template
E N D
Vex Coaches' Training October 12, 2013
Agenda for Today • 9 – 10 AM : Tina Reeves and the Engineering Notebook • 10 – Noon : Finish Building, Basic Robot C • 12-12:30 : Lunch • 12:30 – 2:30 Basic Programs, Functions, Robot C Video Trainer, Setting up Competition Template • 2:30-3:00 Wrap up, Clean Up
Continue Building • 4 motors wired as last step in build • 3 to 2 wire converters • Get charged battery • 9V back-up battery?
Program Basics – Drive Motors • Motors to achieve “tank drive” • Left stick (ch3) drive left wheels • Right stick (ch2) drive right wheels • Other modes: Arcade – 1 stick drives and turns • Left drive motor connected to Port 1 • Port 1 is a dedicated 2 wire port • Right drive motor connected to Port 10 • Port 10 is a dedicated 2 wire port • For today, VEXnet joystick will control drive
Program Basics – Arm and Claw motors • 1 motor dedicated to raise and lower arm • Port 7 will be used with a 3 to 2 wire converter • We will assign it to Ch2 on partner joystick • 1 motor used to open and close the claw • Port 6 will be used with a 3 to 2 converter • We will assign button 5U to open claw • We will assign button 5D to close claw
Writing a Basic Program • All new files begin with task main() { } Code you want the robot to run goes between the braces
Writing a Basic Program • After task main() • All code that needs to be continuously executed must be enclosed in a while () statement while (true) { }
Sample Drive - Download • Once program is entered • Click Robot tab and select Compile • You will be asked to save file • Give it an easy to identify name • Use Wireless programming cable • Connect USB side to same port on computer • Connect phone jack to VEXnet joystick • Turn on Cortex and joystick and wait for them to sync
Sample Drive - Download • Select Robot tab and click Compile and Download • Program will be sent to Cortex over wifi • When done, click on Start and disconnect phone jack • Drive! • May have to reverse negative sign.
Other Programming Method… • New programming wireless kit exists • Provides constant power to joystick • You can use USB A – A cable • Connect cable to Cortex directly • Compile and Download • Reset Cortex afterwards and sync with joystick • Be careful with this method • Continuously removing/inserting VEX key will lead to undue wear and eventual VEXnet issues
Notes on Motor Speed • In VEX, motor speed and direction controlled by a +/- number between -127 and +127 • Negative 127 is full on “reverse” • Positive 127 is full “forward” • Sometimes, we switch the sign • Zero is always “Stop” • Any value in-between can be assigned to a motor • Analog joystick Ch 1,2,3,4 return such a value
A simple Autonomous Program • This program will take drive commands away and make the robot run entirely by a string of commands • See Sample Program 03 – Simple Auto
Combine Programs to Make a Homemade Competition Template • Every VEX game has a an Autonomous and Driver modes • 15 seconds Auto • 1min 45 seconds of driver commands • Sample 04 – Homemade Competition will combine the two previous examples
Homemade Competition Template • You can copy and paste simple autonomous in the 15 second section • You can copy and basic drive commands into the 1min 45 second section
More Efficient Program… • Writing the same code over and over gets boring • Better to write it once and recycle • In Robot C, Functions are segments of code that can be called upon whenever needed • You can pass a variable to Functions • Functions can return values • For us today, we will just use simple variable accepting functions
Program with Functions: Sample 05-Functions Program intfullSpeed = 127; //global variable for full speed inthalfSpeed = 64; //global variable for 1/2 speed intquarterSpeed = 32; //global variable for 1/4 speed void forward(intwaitTime) { motor[port1]=halfSpeed; //Turn on motors and go forward motor[port10]=-halfSpeed; //desired speed wait1Msec(waitTime); //for desired time }
Better Motor Definitions • Using Port # is cumbersome • Any changes in port assignment means changes through whole program • Port # doesn’t tell you anything about the function of the motor when reviewing code • Better to use a labeling system to set motors and sensors • Under Robot Tab • Motor and Sensor Setup
Motor and Sensor Set Up • We label left motor on port 1 – leftDrive • Set it as a 393 regular motor • We label right motor on port 10 – rightDrive • Set it as a 393 regular motor • Note we selected to reverse it • Program will now handle inverted motors • Claw on port 6 – clawMotor • Arm on port7 - armMotor
Motor and Sensor Set Up • Program adds the following header • Don’t modify directly • Any edits should be done in the window • This will make changing port numbers later on much easier
Competition Template • Once all code has been debugged and tested to satisfaction, time to copy and paste it to competition template file • Competition Template is a sample program found under File->Open Sample Program • Select VEX2 ->Templates • Open VEX_Competition_Template • You can Copy and Paste your variables, functions, autonomous commands, and driver controls • You need to retype Motor and Sensor set up
Robot C Curriculum Trainer • Step by Step Instruction Series of videos and documents that teach how to use Robot C
Virtual Worlds • You can start practicing your programming skills • Lets you virtually control a preset robot with defined motors and sensors • Can play Toss Up • You must change Compile Target to Virtual World under Robot Tab
Virtual Worlds • When ready to test, compile and download code • Virtual World will launch • Can click start and test • Login as Guest • Can also drive robot around to practice • Must select Robot Skills mode • AWSD steers, <> raises arm, ; ‘ open close claw