![]() |
Re: Older FRC autonomous code
Well Mark i typed in the code above in red, and yes the black code is there.
It built fine, and i downloaded it , but the autonomous did not work, all that is working is the teleop, one joystick operates one motor and the other joystick the other one. i have the motor controllers plugged into pwm ports 1 and 2. There seems that there should be someway to let the program that this is autonomous and not teleop. is it set up to go to autononmous if there is code there? how many times will it go through the autononmous code? thanks |
Re: Older FRC autonomous code
You do have to put the robot into Autonomous mode before it'll take effect.
Normally, we use a special switch constructed for the purpose. (You can ignore switch 3 on that schematic. It's for earlier versions of the IFI control system.) The disable button is handy to have in any case for emergency stops. You can also setup an auto routine to run while you push a joystick button. If you only want to run autonomous and don't care about Teleop, there is a way to set the team number most-significant-bit so the robot runs Auto mode all the time. P.S. Since you're using PWM 1 and 2 only, the auto code needs to be adjusted to reflect this, rather than pwm01/pwm02 and pwm03/pwm04 E.g., pwm01 = 200; pwm02 = 54; |
Re: Older FRC autonomous code
Where does the switch plug in? on the robot controller?
How would one go about adding the routine into the code? if you would be so kind as to helpme on these two things thanks |
Re: Older FRC autonomous code
The switch plugs into the "competition" port on the Operator Interface. You only need sw1 and sw2, Disabled and Autonomous. If you would rather use a joystick button to indicate autonomous mode, you could say something like "autonomous_mode = pw_trig;" right after Getdata, for both Process_Data_From_Master_uP and User_Autonomous_Code.
|
Re: Older FRC autonomous code
1 Attachment(s)
Yes, it connects to the Operator Interface at the driver controls.
I've attached a photo of a Disable/Auto switch on our '08 robot controls. It happens to be out in my van for an appearance at the Special Olympics tomorrow. If you want to use one of the joystick buttons to trigger it as well, the Autonomous routine can be rewritten slightly to accommodate being called two different ways. I'd prefer not to flat-out clobber the autonomous mode flag, but to structure the code such that either way will trigger the auto routine. Had one team fail year after year on the playing field whenever a particular mentor would return every-other year to help them. Always turned out he would overwrite the autonomous mode flag with a joystick switch so the real flag would never work. It's a bad habit to start. Maybe something along the lines of (in User_Autonomous_Code and main.c): Code:
while (autonomous_mode || (p1_sw_trig == 1) ) /* DO NOT CHANGE! */What might be simpler for you right now is to just call an auto routine like that in post #14 directly from user_routines.c whenever the button is held down. a la, Code:
void Process_Data_From_Master_uP(void)P.S. If you add a new routine like Autonomous(), depending on where you add it you may need to declare it in one of the header files (.h) so the compiler knows where to find it. |
Re: Older FRC autonomous code
Ok great with all the info, sounds like it is best to have a dongle mostly as a kill switch, and then do the simple code in autonomous_user.c using a button trigger. i will try it this afternoon
thanks a bunch and will post how it goes |
Re: Older FRC autonomous code
well i went to the users_routines.c and right after the"Getdata (&rxdata);" i typed in the code from post 20 (the second code). When i ran the build all i get back the following 2 errors:
pl_sw_trig has not been defined and "call of function without prototype" referring to the Autonomous (); line. any help is appreciated. also just a quick check, i am doing this i the users_routines.c and not in the users_routines_fast.c. I understand that the latter one is for autonomous code editing only. |
Re: Older FRC autonomous code
Where is your Autonomous() function? It (or a prototype to it) should be before the routine that gets the error, Process_Data_From_Master_uP(). If the routine is in a separate file, then the prototype needs to go in a header. If Autonomous() is in the same file, then put it before Process_Data_From_Master_uP().
If you build the box, then you don't need the joystick trigger. One or the other. If you don't build the box, then it is easier to just use a joystick trigger. p1_sw_trig should be valid..... it is. http://ifirobotics.com/docs/legacy/2...2-apr-2004.pdf has a list of the IO definitions, you can find everything there. If you look at ifi_aliases.h it will tell you what the definition for everything is. If you created a C file for your code, you have to include ifi_aliases.h to use... anything (OI data, PWM outs, Analog, Digital inputs). |
Re: Older FRC autonomous code
Quote:
-Kevin |
Re: Older FRC autonomous code
Quote:
I think you might not have used the numeral one. It stands for port 1 on the Operator Interface. You can also use a joystick connected to any of the four ports available and refer to the buttons by the prefixes "p1_" "p2_" "p3_" or "p4_" Quote:
Up at the top of user_routines.c after the "#include" lines add the statement: Code:
void Autonomous(void);Doing this in users_routines.c is fine. |
Re: Older FRC autonomous code
Hey mark well i did cure the p1 issue, thanks
But when i try to build all i get an error as follows: 'could not find definition of symbol "Autonomous" in file 'C:\FRC Miller-2006 Codeopt b\user_routines.o' the file is where i have the workspace. I suspect i need to add a line in an .h extension according to the bottom of your post #20, not sure what or where to put it. thanks |
Re: Older FRC autonomous code
If Autonomous() is in the same file (user_routines.c) then you do not need the .h.
Put the following after the #includes at the top of user_routines.c: Code:
void Autonomous(void); |
Re: Older FRC autonomous code
Quote:
I'd guess you have a new file containing the Autonomous routine? It's in the directory of your workspace? If none of this guesswork is true, then describe more about which files your new code is in. If that's how you did it, that's all okay. There is one more step though. Any new file has to be added to the workspace in MPLAB, otherwise, it doesn't get pulled in by the compiler. In MPLAB go to Project -> Add Files to Project... and find your new files in include as part of the compile workspace. |
Re: Older FRC autonomous code
sorry but i am not following the reasoning of what you said in the last post. I can go to the add files in mplab but when there what do i add?
you seem to be asking about a new file? not sure what you are saying. thanks |
Re: Older FRC autonomous code
Sorry, I just guessed wrong about how you've put your code together looking over your virtual shoulder...:)
The error you got meant the compiler couldn't find your Autonomous routine-"void Autonomous(void) {". It'll be something simple, like my leaving out the keyword "void". There are lots of different ways to do this, so here's a template for one way. I assume you are doing all your work in the file user_routines.c This is only one way to integrate the code from posts 20 and 14. Code:
/******************************************************************************* |
| All times are GMT -5. The time now is 23:24. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi