Exemple #1
0
task main()
{
	while(true)
	{

		getJoystickSettings(joystick);

		if (joy1Btn(5) == 1)
			single_main_wheel_fast(joystick.joy1_y2, joystick.joy1_x2);
		else
			single_main_wheel(joystick.joy1_y2, joystick.joy1_x2);

		lift(joystick.joy2_y1);

		if (joy2Btn(6) == 1)
			winchmove(joystick.joy2_y2);
		else motor[winch] = 0;

		servo_in(joy2Btn(4));
		servo_out(joy2Btn(2));
		servo_stop(joy2Btn(3));

		/*
		servoFlat(joy2Btn(1));
		servoDrop(joy2Btn(2));
		servoRaise(joy2Btn(4));
		servoAngleDown(joy2Btn(3));
		*/

		flagmove(joystick.joy1_x1);

		wait1Msec(TIME_INTERVAL);
	}
}
Exemple #2
0
int servo_start(void)                          // Take cog & start servo process
{
  lockID = locknew();                         // Check out a lock
  if (lockID == -1) return -1;                // Return -1 if no locks
  servo_stop();                                // Stop in case cog is running
  servoCog = cogstart(&servo, NULL, stack,    // Launch servo into new cog
             sizeof(stack)) + 1;
  return servoCog;                            // Return cog that was taken
}
int main()                                    // main function
{
  servo_angle(16, 0);                         // P16 servo to 0 degrees
  pause(500);                                 // Allow 1/2 second to get there
  servo_setramp(16, 7);                       // Change by up to 7/10 degree/20 ms 
  servo_angle(16, 1800);                      // P16 servo to 180 degrees
  pause(6000);                                // Allow 6 seconds to get there
                                              // (with ramping in effect)
  servo_stop();                               // Stop servo process
}
void car_movement_control(struct movement_info *cmd)
{
	if (cmd->car_forward == 0x01)  //前进控制
	{
		DC_Motor(1, 0, 60);	//右轮正转
		//Delay_ms(30);
		DC_Motor(2, 0, 50); //左轮正转
	}
	else if (cmd->car_back == 0x01) //后退控制
	{
		DC_Motor(1, 2, 70); //右轮反转
		Delay_ms(10);
		DC_Motor(2, 2, 90); //左轮反转
	}
	else if (cmd->car_right == 0x01) //右转控制
	{
		DC_Motor(1, 2, 40);  //右轮反转
		DC_Motor(2, 0, 50);  //左轮大速度(此处电机有问题给很大的占空比,转速仍很小)
	}
	else if (cmd->car_left == 0x01)
	{
		DC_Motor(1, 0, 20);	//右轮大速度
		DC_Motor(2, 2, 20); //左轮反转
	}
	else if (cmd->car_stop == 0x01)
	{
		DC_Motor(1, 1, 0);	//右轮停止
		DC_Motor(2, 1, 0);  //左轮停止
	}
	else
	{}

	if (cmd->steer_left == 0x01) //舵机左转
	{
		servo_turn_left();
	}
	else if (cmd->steer_right == 0x01) //舵机右转
	{
		servo_turn_right();
	}
	else if (cmd->steer_stop == 0x01) //舵机停止
	{
		servo_stop();
	}
	else
	{}

}