43 volatile bool colorStatsProcessed;
46 static uint8_t distToPix( uint8_t distance );
48 void trackColorInit(int8_t dir)
54 moveStraight(-1 * 0xb, 255);
55 inSeekPosition =
true;
62 setServo(
PAN, PAN_CENTER + panOffset + PAN_SEEK_OFFSET);
66 setServo(
PAN, PAN_CENTER + panOffset - PAN_SEEK_OFFSET);
70 setServo(
PAN, PAN_CENTER + panOffset);
71 setServo(
TILT, TILT_LOOKUP);
89 uint8_t getBallY(
void )
100 rprintf(
"TC %d %d %d %d %d %d\r",
101 BALL_RMIN, BALL_RMAX, BALL_GMIN, BALL_GMAX, BALL_BMIN, BALL_BMAX);
103 colorStatsProcessed =
true;
104 while (colorStatsProcessed) ;
106 return (lineStats[0][Y1_NDX]);
113 rprintf(
"TC %d %d %d %d %d %d\r",
114 BALL_RMIN, BALL_RMAX, BALL_GMIN, BALL_GMAX, BALL_BMIN, BALL_BMAX);
115 colorStatsProcessed =
true;
116 while (colorStatsProcessed) ;
118 return lineStats[0][Y1_NDX] > 0;
128 bool cameraSeekLeft( uint8_t uncheckedBalls[][2], uint8_t numUncheckedBalls )
130 bool foundBall =
false;
131 uint8_t scanHeight = 4;
135 uint8_t scanLimit = distToPix(
136 uncheckedBalls[numUncheckedBalls - 1][BALL_DIST] + 1);
141 while (i + 1 < numUncheckedBalls)
143 maxBallX[i] = (distToPix(uncheckedBalls[i][BALL_DIST]) +
144 distToPix(uncheckedBalls[i + 1][BALL_DIST])) / 2;
147 maxBallX[i] = scanLimit;
150 while (x - scanHeight > scanLimit)
161 while (maxBallX[i] > x)
165 addToGoalList(uncheckedBalls[i][BALL_NODE_NUM]);
179 static uint8_t distToPix( uint8_t distance )
219 bool cameraSeekRight(uint8_t uncheckedBalls[][2], uint8_t numUncheckedBalls)
221 bool foundBall =
false;
222 uint8_t scanHeight = 4;
224 uint8_t scanLimit = 174 - distToPix(
225 uncheckedBalls[numUncheckedBalls - 1][BALL_DIST] + 1);
230 while (i + 1 < numUncheckedBalls)
232 maxBallX[i] = ((174 - distToPix(uncheckedBalls[i][BALL_DIST])) +
233 (174 - distToPix(uncheckedBalls[i + 1][BALL_DIST])))
237 maxBallX[i] = scanLimit;
240 while (x + scanHeight < scanLimit)
251 while (maxBallX[i] < x)
255 addToGoalList(uncheckedBalls[i][BALL_NODE_NUM]);