|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
EasyC-FRC - Arcade driving help
Our team is using EasyC-FRC (currently ver 2.7.0.2) this year. That's okay. Hey -- it's easy. But I need to get some starting point, and I always get hung up on something simple at the beginning. And if I don't know, how are my 20 programming kids going to know?
We have a 4-motor test robot, and we're going to use arcade (single joystick) driving. All of the examples in the Help file show the Tank mode, but no details on Arcade. I've got the infinite While(1) loop okay; the joystick input okay using JoyX = AnalogOIInput(~~~) and JoyY = AnalogOIInput(~~~); and finally the OItoPWM(~~~) to send the info to the 4 motors. We do some magic calcs [1] with JoyX and JoyY to optimize our motors, etc, then send them to OItoPWM() -- how? Do we mix the X and Y somehow? How much goes to the left side motors and how much to the right side? Or do we use the "Arcade - 4 motor" function block in the While loop instead, and be done with it? Thanks for your help. Roger. [1] Magic calcs are currently to reduce the speed of the robot -- we have a small room to drive it. |
|
#2
|
||||
|
||||
|
First you need to be in L2 or PRO mode. On the toolbar at the top of the window you should see L1, L2, and PRO. Select the one you need.
Create a new competition project. Open the Operator control function. Under the RC Control section of the commands you should see a "Arcade - 4 Motor". Add this to the Operator control function. The options for this command are fairly simple. EDIT: "Advanced" code i attached is fairly simple. Code:
int LeftDrive, RightDrive; unsigned char JoyY, JoyX; JoyX = GetOIAinput(1,1); JoyY = GetOIAinput(1,2); LeftDrive = Limit(JoyX - JoyY + 127); RightDrive = Limit(JoyX + JoyY -127); // the mixing code above produce values out of the 0-255 range. // we must limit the values or we will get overloads and weird things. LeftDrive = Limit(LeftDrive,0,255); RightDrive = Limit(RightDrive,0,255); //Assign motor values. //Left motors SetPWM(1, LeftDrive); SetPWM(2, LeftDrive); //Right motors SetPWM(3, RightDrive); SetPWM(4, RightDrive); Code:
int Limit (int input, int min, int max)
{
if (input < min)
{
input = min;
}
if (input > max)
{
input = max;
}
return input;
}
If you need more help PM or e-mail me. ![]() EDIT: I have attached another file with custom arcade software. It may be easier to use your "Magic calcs" with this. Last edited by EHaskins : 11-10-2006 at 13:27. |
|
#3
|
|||
|
|||
|
Re: EasyC-FRC - Arcade driving help
Thanks EHaskins -- to think it's as simple as:
LeftDrive = JoyX - JoyY + 127; RightDrive = JoyX + JoyY - 127; LeftDrive = Limit(LeftDrive,0,255); RightDrive = Limit(RightDrive,0,255); to mix the x and y axis numbers and get a motor speed. Can't wait to get to that robot now! Roger. |
|
#4
|
||||
|
||||
|
Re: EasyC-FRC - Arcade driving help
If you have any problems PM or e-mail me.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| EasyC-Vex Rx/motor frustrations- please help! | Steve0100 | Programming | 10 | 08-07-2006 02:18 |
| help on easyC | Loki1989 | Programming | 5 | 19-03-2006 08:42 |
| Update for EasyC for FRC Available | Kingofl337 | Programming | 0 | 07-03-2006 14:42 |
| HELP!!!! EasyC Compiling Issues | Wbrown0389 | Programming | 8 | 29-01-2006 09:18 |
| Kickoff easyC workshop integrated into EasyC help file | Dan Larochelle | Programming | 0 | 11-01-2006 06:12 |