Please help me, I can’t figure out how to use the camera to actually MOVE the robot. I have the camera code working along with the camera itself, but how do I move pwm01 (left drive wheel) and pwm02 (right drive wheel) individually according to the pan of the camera? I have no idea where to begin with this code. (I just got the code to work for the camera and I’ve been trying for weeks. Now I only have 2 days, Please help if you can)
int I_Want_To_Search = 1;
int pwm01_On_Off = 1;
int pwm02_On_Off = 1;
int pwm03_On_Off = 1; //these are all at the top of user_routines.c Everything else is in Processfrom master UP (except TARGETRANGE] and FIND_DISTANCE())
if(I_Want_To_Search == 1)
{
Servo_Track();
}
if((Get_Tracking_State() == CAMERA_ON_TARGET) || (Get_Tracking_State() == TARGET_IN_VIEW))
{
pwm01_On_Off = 0;
pwm02_On_Off = 0;
pwm01 = 230; //Desired Forward Velocity
pwm02 = 230;
Switch3_LED = 1;
//printf("2"); //these statements are just to see if it worked
}
else
{
Switch3_LED = 0;
pwm01_On_Off = 1;
pwm02_On_Off = 1;
//printf("4"); //these statements are just to see if it worked
}
/*
if(Find_Distance() <= 50) //THIS DOESN"T WORK!! WHY NOT?
{
pwm01 = 127;
pwm02 = 127;
pwm01_On_Off = 1;
pwm02_On_Off = 1;
I_Want_To_Search = 0; //Stops calling Servo_Track(). THEN CALL ANOTHER THING
Switch3_LED = 0;
//printf("3"); //these statements are just to see if it worked
}
*/
if(p1_y > 129 || p2_y > 129)
{
pwm01_On_Off = 1;
pwm02_On_Off = 1;
}
else if(p1_y < 125 || p2_y < 125)
{
pwm01_On_Off = 1;
pwm02_On_Off = 1;
}
The Find_Distance() function is this:
unsigned int Find_Distance(void)
{
return(targetRange[pwm07-144]);
}and target range is this:
const rom unsigned int targetRange] =
{
3355,
1676,
1116,
835,
666,
553,
472,
411,
363,
325, //place 10
293,
267,
244,
225,
208,
193,
179,
167,
156,
146, //place 20
137,
128,
121,
113,
107,
100,
94,
89,
83,
78, //place 30
73,
68,
64,
60,
56,
51,
48,
44,
40,
36, //place 40
33,
29,
26,
23,
19,
16,
13,
10,
6,
3, //place 50
0, //place 51
};
So I would like to know why my distance thing isn’t working (Max tilt is 194 and min is 94, center at 144. My degree per pwm step was 1.7647 (50/90? is that right?) Then I multiplied that by the pwm index up to 51 and found the radian value and plugged it into TAN(x) and then did 116-12.625(my height)/tan(the radian value from before)) Assuming that’s correct, what’s wrong with the rest of the code? It’s not working properly. Camera looks away from the light when I comment in the Find_Distance code (less than 50 or whatever). ALSO, how do I program the robot to move forward???