Robot C-program for Group A-1 (light), E5 Fall 2002
Sasha Laundy
David Benitez
Eric Williams
void main(void)
{
/* Group A1 - Sasha Laundy, David Benitez, and Eric Williams */
/* Seeking the Light */
/* Fall 2002, Swarthmore College */
/* declarations */
int rightbumpflag,leftbumpflag;
int white[4];
int input[4];
int next[4]; /* i think this array is obselete */
int i,j,k,n,m;
rightbumpflag=1;
leftbumpflag=1;
/* take in the brightest spot */
printf("\nPut on light; press start.");
start_press();
for (j = 2; j <= 3; j++)
{
white[j] = analog(j);
}
printf("\nWhere shall I start?");
start_press();
printf("\nHere we go!!!");
motor(0,80);
motor(1,80);
while(input[2] != white[2] && !stop_button()) /* while we're not at the max and while the stop button is not pushed */
{
/* gathering information */
for(m = 2;m <= 3; m++)
{
input[m] = analog(m);
input[3] = 20 + input[3]; /* compensation for difference in sensors */
}
printf("\nL=%d R=%d",input[2], input[3]);
/* while it's too dark and robot's unbumped */
while(input[3] >= 100 && (leftbumpflag == 1 && rightbumpflag == 1))
{
motor(1,100);
motor(0,100);
for(m = 2;m <= 3; m++)
{
input[m] = analog(m); /* same gathering as before */
input[3] = 20 + input[3];
rightbumpflag = digital(8);
leftbumpflag = digital(7);
printf("\nL=%d R=%d",input[2], input[3]);
}
motor(1,100);
motor(0,100);
}
/* execute bump routine */
if(leftbumpflag == 0)
{
beep();beep();
motor(1,-100);
motor(0,-100);
sleep(1.5);
/* turn right */
motor(1,100);
motor(0,-50);
sleep(1.5);
}
if (rightbumpflag == 0)
{
beep();beep();
motor(1,-100);
motor(0,-100);
sleep(1.5);
/* turn left */
motor(0,100);
motor(1,-50);
sleep(1.5);
}
if (leftbumpflag == 0 && rightbumpflag == 0)
{
beep();beep();
motor(1,-100);
motor(0,-100);
sleep(2.5);
motor(1,100);
motor(0,-50);
sleep(3.0);
}
rightbumpflag = 1;
leftbumpflag = 1; /* reset, so they're not continually bumped */
if(input[3] >= input[2]) /* if left is darker */
{
motor(0,100);
motor(1,40);
}
motor(0,20);
motor(1,20);
if(input[3]<=input[2])
{
/* turn left */
motor(1,100);
motor(0,40);
}
motor(0,20);
motor(1,20);
}
/* finishing sequence that tells us that the robot has found the lightest */
ao();
beep();
beep();
beep();
beep();
beep();
/* victory dance */
motor(1,100);
motor(0,-100);
sleep(6.0);
ao();
beep();
printf("\nDone!");
}