/*** Playback Robot ***/
void playback_robot(){
  while(playback) {
    int i=0;
    display_movement(&start_playback);
    /* pull from array */
    for(i=0; i<=array_length; i++) {
      int direction=array1[i];
      
      if(direction == 1) {
        move_forward();
      }else if(direction == 2) {
        move_left();
      }else if(direction == 3) {
        move_right();
      }else if(direction == 4) {
        move_reverse();
      }else if(direction == 5) {
        move_pause();
      }else if((direction == 0) || (direction == 9)) {
        playback=0;
        display_movement(&stop_playback);
        break;
      } else {
        playback=0;
        break;
      }
      if(SW5_down()){         //switch5 stop playback mode
        playback=0;
        display_movement(&stop_playback);
      }
    }
  }
}
/*** get keypad input ****/
void get_keypad_input() {  
  char keypad_key;
  keypad_enable();
  while(training) {
    keypad_key=getkey();          // get value from keypad
    wait_keyup();
    lcd_init();
    set_lcd_addr(0x00);
    if(keypad_key==1) {           // 1 = forward
      move_forward();               
    }else if(keypad_key==4) {     // 4 = left
      move_left();
    }else if(keypad_key==7) {     // 7 = right
      move_right();
    }else if(keypad_key==0) {     // 0 = reverse
      move_reverse();
    }else if(keypad_key==6) {     // 7 = pause
      move_pause();
    }else if(keypad_key==9) {     // break out of training mode
      training=0;
      move_stop();
      display_movement(&stop_training);
      break;
    }else{
      display_movement(&error);
    }
    ms_delay(50);
  }
}
Exemple #3
0
void changeMotion()
{
  //------------------------------------------------------------------------------
  // change motion based on current cat state
  
  // Author: Lingxiao Zheng
  // Date: 09/29/2015

  //------------------------------------------------------------------------------
  switch (Car_State)
    {
    case 0: // pause 0.5s
    case 2:
    case 4:
    case 6:
    case 8:
    case 10:
      if (resetTimerA0)
	changeTimerA0Interval(TA0_INTERVAL_0_5s);

      stop();
      break;
      
    case 1: // move forward until BLK_LN
      if (!startADC)
	startADC=TRUE;
     
      move_forward();
      break;
      
    case 3: // move reverse until BLK_LN
      move_reverse();

      // recording time
      if (!isRecording)
	startRecording();
      
      if (!startADC)
	{
	  five_msec_sleep(SLEEP_1s/2);
          startADC=TRUE;
	}
      break;
       
    case 5: // go forward for half of time going reverse
      if (resetTimerA0)
        changeTimerA0Interval(TA0_INTERVAL_0_1s*HALF(getRecording()));
      
      move_forward();
      break;
      
    case 7: // spin clockwise 
      if (resetTimerA0)
	changeTimerA0Interval(TA0_INTERVAL_3s);

      spin_clockwise();
      break;
      
    case 9: // spin counter clockwise 
      if (resetTimerA0)
	changeTimerA0Interval(TA0_INTERVAL_5s);

      spin_counterclock();
      break;
      
    default: // done, disable all ISR
      TA0CTL |= MC__STOP;
      ADC10IE &= ~ADC10IE0;

      while(ALWAYS)
	LPM4;
    }
}