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!");
}