View Full Version : Got it working now theres another problem!
cdennisxlx2
24-03-2006, 05:24
Ok, the camera is working fine (altho i have no clue what do for the autonomous coding with including the camera) but anyhow we are using 6 diff autonomy codes and we have a dip switch pluged into rc_dig_in11 - 16 and the coding looks for which one is true then goes to that code, i have the LEDs on the control board light green when one of those return true (as a way to easily tell which mode we are using for that match) but when i merge my coding (just the LED defining for the rc_dig_in ports) with the camera coding, the LEDs dont light up, also i have tried just the main camera coding (with out my modifications) can any one tell me what to do about this?
Alan Anderson
24-03-2006, 06:57
Where in the program did you put the code that controls the OI LEDs? If it's in Default_Routine(), did you remember to uncomment the call to it from Process_Data_from_Master_Up()? If it's somewhere else, did you remember to remove the original LED control code from the program?
cdennisxlx2
24-03-2006, 07:04
im not sure exactly, all i know its in the LED output section of User_Routines, i dont know really anything about the coding for the cam so i dont know what needs to be un commented or commented out and i did comment out the original LED output coding, and it works fine with my modified defult code but not with the modified camera code, in fact the LED that should light up when the camera has a green target doesnt light up either, even with an un modified cam User_Routines.
Alan Anderson
24-03-2006, 08:11
...its in the LED output section of User_Routines...
In the provided camera code, the call to Default_Routine() is commented out. You need to uncomment it before any of the motor/relay/LED outputs will do anything.
cdennisxlx2
24-03-2006, 08:15
i just un comment the one line that says defult_routine; (something like that) right? because i did that and the camera didnt track the green then
Alan Anderson
24-03-2006, 09:16
Make sure the pwm output code in Default_Routine() isn't conflicting with the camera servo control. As provided, the camera code wants the pan and tilt servos on pwm01 and pwm02. Also as provided, the default pwm code copies joystick inputs to those same pwm outputs. You'll have to either strip the pwm01/pwm02 control from Default_Routine() or move the camera servos to other outputs (details are in tracking.h).
Note: avoid using pwms 13-16. Hardware interrupts, including the interrupt-based serial communication, will interfere with the "fast update" pwm routine for those outputs and cause unwanted jitter in the servo or speed control signals.
cdennisxlx2
24-03-2006, 15:56
ok i uncommented Default_Routine() and went into tracking.h and chaned it from pwm01 - 02 to pwm11 - 12 and when i load the code the camera doesnt do anything (my LEDs light up) am i just not understanding that the camera isnt going to do anything till it has autonomy code? we want to use it as an aiming device during the match, i think im just confused
Alan Anderson
24-03-2006, 16:08
The very beginning of Default_Routine() has this code: /*---------- Analog Inputs (Joysticks) to PWM Outputs-----------------------
*--------------------------------------------------------------------------
* This maps the joystick axes to specific PWM outputs.
*/
pwm01 = p1_y;
pwm02 = p2_y;
pwm03 = p3_y;
pwm04 = p4_y;
pwm05 = p1_x;
pwm06 = p2_x;
pwm07 = p3_x;
pwm08 = p4_x;
pwm09 = p1_wheel;
pwm10 = p2_wheel;
pwm11 = p3_wheel;
pwm12 = p4_wheel;
You need to take out anything that would override the outputs used in the Servo_Track() routine. If you want the pan and tilt servos on pwm11 and pwm12, comment out the last two lines in this section (or delete them outright).
Uberbots
24-03-2006, 22:16
you know, for some reason when we set our camera's PWM output to a value other then 1 or 2, we got issues. maybe its the same for you?
also, do what alan anderson told you to, because that same error (my stupidity...) gave us that problem at the begging of the season.
X-Istence
25-03-2006, 16:42
Remember, when something is plugged into rc_dig_in[1-16] it is on, when the switch is actually off:
switch off == 1 in code
switch on == 0 in code
This caught me by surprise.
My team used rc_dig_in[1-3] to create 7 different modes:
000 = off
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
Code is below for what you can use to do this. Stick it in user_routines_fast.c to make use of it, make sure to change it to what you need to use it for :P.
unsigned int Auton = 0;
unsigned char flip (unsigned char input) {
if (input == 1)
return 0;
if (input == 0)
return 1;
}
void User_Autonomous_Code(void)
{
/* Initialize all PWMs and Relays when entering Autonomous mode, or else it
will be stuck with the last values mapped from the joysticks. Remember,
even when Disabled it is reading inputs from the Operator Interface.
*/
pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127;
pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127;
relay1_fwd = relay1_rev = relay2_fwd = relay2_rev = 0;
relay3_fwd = relay3_rev = relay4_fwd = relay4_rev = 0;
relay5_fwd = relay5_rev = relay6_fwd = relay6_rev = 0;
relay7_fwd = relay7_rev = relay8_fwd = relay8_rev = 0;
while (autonomous_mode) /* DO NOT CHANGE! */
{
if (statusflag.NEW_SPI_DATA) /* 26.2ms loop area */
{
Getdata(&rxdata); /* DO NOT DELETE, or you will be stuck here forever! */
// We have to shift the second and the third bits
Auton = flip(rc_dig_in01) | flip(rc_dig_in02) << 1 | flip(rc_dig_in03) << 2;
if (Auton == 0) {
// do absolutely nothing
}
else {
if (Auton == 1) {
// see 7
}
if (Auton == 2) {
// See 7
}
if (Auton == 7) {
// Do stuff when in binary added up together it is 7
}
}
Putdata(&txdata); /* DO NOT DELETE, or you will get no PWM outputs! */
}
}
}
cdennisxlx2
25-03-2006, 18:05
Remember, when something is plugged into rc_dig_in[1-16] it is on, when the switch is actually off:
switch off == 1 in code
switch on == 0 in code
This caught me by surprise.
My team used rc_dig_in[1-3] to create 7 different modes:
000 = off
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
Code is below for what you can use to do this. Stick it in user_routines_fast.c to make use of it, make sure to change it to what you need to use it for :P.
unsigned int Auton = 0;
unsigned char flip (unsigned char input) {
if (input == 1)
return 0;
if (input == 0)
return 1;
}
void User_Autonomous_Code(void)
{
/* Initialize all PWMs and Relays when entering Autonomous mode, or else it
will be stuck with the last values mapped from the joysticks. Remember,
even when Disabled it is reading inputs from the Operator Interface.
*/
pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127;
pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127;
relay1_fwd = relay1_rev = relay2_fwd = relay2_rev = 0;
relay3_fwd = relay3_rev = relay4_fwd = relay4_rev = 0;
relay5_fwd = relay5_rev = relay6_fwd = relay6_rev = 0;
relay7_fwd = relay7_rev = relay8_fwd = relay8_rev = 0;
while (autonomous_mode) /* DO NOT CHANGE! */
{
if (statusflag.NEW_SPI_DATA) /* 26.2ms loop area */
{
Getdata(&rxdata); /* DO NOT DELETE, or you will be stuck here forever! */
// We have to shift the second and the third bits
Auton = flip(rc_dig_in01) | flip(rc_dig_in02) << 1 | flip(rc_dig_in03) << 2;
if (Auton == 0) {
// do absolutely nothing
}
else {
if (Auton == 1) {
// see 7
}
if (Auton == 2) {
// See 7
}
if (Auton == 7) {
// Do stuff when in binary added up together it is 7
}
}
Putdata(&txdata); /* DO NOT DELETE, or you will get no PWM outputs! */
}
}
}
what type of switch did u use?
X-Istence
25-03-2006, 21:58
what type of switch did u use?
PWM cable, connect the two outside ones. The signal line, and the ground line.
I believe it was black and white. Red was simply cut down as closely to the connector as possible, so that the 5v would not cause any trouble.
We had some bad PWM cables that got cut open by accident by scraping along the frame, so we cut them, and simple twisted them together, and then right before a match plugged in the ones we wanted, and removed the ones we did not want, and we were set.
vBulletin® v3.6.4, Copyright ©2000-2017, Jelsoft Enterprises Ltd.