Robot C-program for Group C-2 (temp), E5 Fall 2002

Sally Hall

Mark Piper

Simeon Realov

#define FWD0 30
#define FWD1 30
#define BKWD0 -50
#define BKWD1 -50
#define TTURN45 1.0
#define INTERVAL 1.0

void straight(void)
{
    motor(0,FWD0);
    motor(1,FWD1);
}

void back (void)
{
    motor (0, BKWD0);
    motor (1, BKWD1);
}

void left(void)
{
    motor(0,FWD0);
    motor(1,BKWD1);
    sleep(TTURN45);
}

void right(void)
{
    motor(0,BKWD0);
    motor(1,FWD1);
    sleep(TTURN45);
}

void bumpright(void)
{
    back();
    sleep (INTERVAL);
    left();left();
}

void bumpleft (void)
{
    back();
    sleep(INTERVAL);
    right();right();
}

int high (int x, int y)
{
    if (x>y) return x;
    return y;
}

void maximum(int a,int b)
{
    if((a-20)>b)
      {
        left();
    }
    else if(a<(b-20))
        {
          right();
      }
}

void jamesbond(void)
{
    int a;
    for(a=0;a<2;a++)
      {
        tone(329.63, 0.5);
        tone(369.99, 0.25);
        tone(369.99, 0.25);
        tone(369.99, 0.5);
        tone(369.99, 1.0);
        tone(329.63, 0.5);
        tone(329.63, 0.5);
        tone(329.63, 0.5);
        tone(329.63, 0.5);
        tone(392.00, 0.25);
        tone(392.00, 0.25);
        tone(392.00, 0.5);
        tone(392.00, 1.0);
        tone(369.99, 0.5);
        tone(369.99, 0.5);
        tone(369.99, 0.5);
    }
    beep();
}

void main(void)
{
    int a,b,max,counter=1;
    while(!stop_button())
      {
        a=analog(2);
        b=analog(3);
        printf("\nL=%d R=%d;       BL=%d BR=%d",a,b,digital(7),digital(8));
        sleep(0.3);
    }
    max=high(a,b);
    while(!start_button())
      {
    }
    while(!stop_button())
      {
        if(!digital(7))
          {
            bumpleft();
        }
        else if(!digital(8))
            {
              bumpright();
          }
          else
            {
              a=analog(2);
              b=analog(3);
              if(a>(max-10)||b>(max-10))
                {
                  printf("\nYou're there!!!");
                  break;
              }
              else if(counter==3)
                  {
                    printf("\nL=%d R=%d;       BL=%d
BR=%d",a,b,digital(7),digital(8));
                    maximum(a,b);
                    straight();
                    sleep(INTERVAL);
                    counter=1;
                }
                else
                  {
                    counter++;
                }
          }
    }
    ao();
    jamesbond();
}