task main()
{
  SetSensorLowspeed(S1);
  
  TextOut(0, LCD_LINE1, "test1");
  HTPFComboDirect(S1, PF_CHANNEL_1, PF_CMD_FWD, PF_CMD_FWD);
  Wait(1000);
  HTPFComboDirect(S1, PF_CHANNEL_1, PF_CMD_REV, PF_CMD_REV);
  Wait(200);
  HTPFComboDirect(S1, PF_CHANNEL_1, PF_CMD_STOP, PF_CMD_BRAKE);
  Wait(1000);
  HTPFComboPWM(S1, PF_CHANNEL_1, PF_PWM_FWD5, PF_PWM_REV5);
  Wait(5000);

  TextOut(0, LCD_LINE2, "test2");
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_INCR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_INCR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_INCR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_INCR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_INCR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_INCR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_DECR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_DECR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_DECR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_DECR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_DECR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_DECR_SPEED);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_STOP);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_TOGGLE_LIGHT);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_TOGGLE_LIGHT);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_TOGGLE_LIGHT);
  Wait(500);
  HTPFTrain(S1, PF_CHANNEL_1, TRAIN_FUNC_TOGGLE_LIGHT);
  Wait(5000);

  TextOut(0, LCD_LINE3, "test3");
  for(int i = 0; i < 16; i++) {
    for(int j = 0; i < 16; i++) {
      HTPFComboPWM(S1, PF_CHANNEL_1, i, j);
      Wait(500);
    }
  }

  TextOut(0, LCD_LINE4, "test4");
  HTPFSingleOutputPWM(S1, PF_CHANNEL_1, PF_OUT_B, PF_PWM_FWD4);
  for(int i = 0; i < 16; i++) {
    HTPFSingleOutputPWM(S1, PF_CHANNEL_1, PF_OUT_A, i);
    Wait(500);
  }
  HTPFComboPWM(S1, PF_CHANNEL_1, PF_PWM_FLOAT, PF_PWM_FLOAT);

  TextOut(0, LCD_LINE5, "test5");
  Wait(3000);
  HTPFSingleOutputPWM(S1, PF_CHANNEL_1, PF_OUT_A, PF_PWM_FWD4);
  for(int i = 0; i < 16; i++) {
    HTPFSingleOutputPWM(S1, PF_CHANNEL_1, PF_OUT_B, i);
    Wait(500);
  }
  HTPFComboPWM(S1, PF_CHANNEL_1, PF_PWM_FLOAT, PF_PWM_FLOAT);

  TextOut(0, LCD_LINE6, "test6");
  HTPFRepeat(S1, 1, 20);
  HTPFRepeat(S1, 1, 20);

  Wait(10000);
}
