Search Servo Initialization Caution

The default search code initializes the camera pan/tilt servos with this code.

    if(new_search == 1)
        new_search = 0;
        temp_pan_servo = 0;
        temp_tilt_servo = Tracking_Config_Data.Tilt_Center_PWM;
        // search code
    PAN_SERVO = (unsigned char)temp_pan_servo;
    TILT_SERVO = (unsigned char)temp_tilt_servo;

Note that the pan servo pwm is hardcoded to zero. If you have changed PAN_MIN_PWM_DEFAULT from zero to something else then hardcoding to zero is incorrect. Change the line to:

        temp_pan_servo = Tracking_Config_Data.Pan_Min_PWM;

Hmmm… I wonder what the heck I was thinking when I did that? Oh well, since I can’t possibly explain this away as an undocumented “feature”, I guess we have to call it a bug <grin>.


I found it by reading the code to understand the algorithm. The rest of the code was all nicely parameterized. :slight_smile:

You may want to keep temp_pan_servo or temp_tilt_servo the same for a new search as well; we ran into a problem where the camera would catch the target as it spun all the way back to 0 (as it does this the tilt angle increases, which is why it caught it on the way to the left but not the right), lose it when it got there, initialize a new search and have us repeat over and over.