Exemple #1
0
int main(void) {
    unsigned long home[32]  = {0L};
    unsigned long frame[32] = {0L};
    
    // first set the correct RoBoard version
    roboio_SetRBVer(RB_100);
    //roboio_SetRBVer(RB_100RD);  // if your RoBoard is RB-100RD
    //roboio_SetRBVer(RB_110);    // if your RoBoard is RB-110
    //roboio_SetRBVer(RB_050);    // if your RoBoard is RB-050

    rcservo_SetServo(RCSERVO_PINS1, RCSERVO_SERVO_DEFAULT_NOFB);     // select the servo model on pin S1 as non-feedback servo
    rcservo_SetServo(RCSERVO_PINS2, RCSERVO_SERVO_DEFAULT_NOFB);     // select the servo model on pin S2 as non-feedback servo
    if (rcservo_Init(RCSERVO_USEPINS1 + RCSERVO_USEPINS2) == false)  // set PWM/GPIO pins S1 & S2 as Servo mode
    {
        printf("ERROR: fail to init RC Servo lib (%s)!\n", roboio_GetErrMsg());
        return -1;
    }

    home[0] = home[1] = 1500L;  // set the initial home position of all servos as 1500us
    rcservo_EnterPlayMode_HOME(home);  // enter Action Playing Mode for moving servos

    printf("press ENTER to move servo on pins S1 & S2.\n"); getchar();
    frame[0] = 900L;   // move the servo on pin S1 to position 900us
    frame[1] = 1800L;  // move the servo on pin S2 to position 1800us
    rcservo_MoveTo(frame, 2000L);  // move servos to the target positions in 2000ms

    printf("press ENTER to move only the servo on pin S1.\n"); getchar();
    rcservo_MoveOne(RCSERVO_PINS1, 1800L, 500L);  // move the servo to position 1800us in 300ms

    printf("press ENTER to move servo on pins S1 & S2.\n"); getchar();
    frame[0] = 900L;   // move the servo on pin S1 to position 900us
    frame[1] = 900L;   // move the servo on pin S2 to position 900us
    rcservo_MoveTo(frame, 3000L);  // move servos to the target positions in 3000ms

    printf("Complete.\n");

    rcservo_Close();  // close RC Servo lib
    return 0;
}
Exemple #2
0
int main(void) {

	// first set the correct RoBoard version
    roboio_SetRBVer(RB_100);
    //roboio_SetRBVer(RB_100RD);  // if your RoBoard is RB-100RD
    //roboio_SetRBVer(RB_110);    // if your RoBoard is RB-110
    //roboio_SetRBVer(RB_050);    // if your RoBoard is RB-050

    if (rcservo_Init(RCSERVO_USEPINS1 + RCSERVO_USEPINS2) == false)  // set PWM/GPIO pins S1 & S2 as Servo mode
    {
        printf("ERROR: fail to init RC Servo lib (%s)!\n", roboio_GetErrMsg());
        return -1;
    }

    rcservo_EnterPWMMode();  // make all servo-mode pins go into PWM mode

    printf("Send PWM pulses of period 10ms duty 1500us on pin S1...\n");
    rcservo_SendCPWM(RCSERVO_PINS1, 10000L, 1500L);

    printf("Send PWM pulses of period 5ms duty 800us on pin S2...\n");
    rcservo_SendCPWM(RCSERVO_PINS2, 5000L, 800L);

    printf("Press ENTER to change PWM output.\n"); getchar();

    printf("Send PWM pulses of period 20ms duty 2300us on pin S1...\n");
    rcservo_SendCPWM(RCSERVO_PINS1, 20000L, 2300L);

    printf("Send PWM pulses of period 10ms duty 1000us on pin S2...\n");
    rcservo_SendCPWM(RCSERVO_PINS2, 10000L, 1000L);

    printf("Press ENTER to stop.\n"); getchar();

    rcservo_StopPWM(RCSERVO_PINS1);
    rcservo_StopPWM(RCSERVO_PINS2);

    rcservo_Close();  // close RC Servo lib
    return 0;
}
Exemple #3
0
int main()
{	
	unsigned long usedchannel = RCSERVO_USECHANNEL0 +RCSERVO_USECHANNEL1 +RCSERVO_USECHANNEL2 +
		          RCSERVO_USECHANNEL4 +RCSERVO_USECHANNEL5 +RCSERVO_USECHANNEL6+
				  RCSERVO_USECHANNEL9 +RCSERVO_USECHANNEL10+RCSERVO_USECHANNEL11+
				  RCSERVO_USECHANNEL13+RCSERVO_USECHANNEL14+RCSERVO_USECHANNEL15+
				  RCSERVO_USECHANNEL16+RCSERVO_USECHANNEL17+RCSERVO_USECHANNEL18+
				  RCSERVO_USECHANNEL21+RCSERVO_USECHANNEL22+RCSERVO_USECHANNEL23; // for RB-100
		
	if(allegro_init())
	{
		printf("error:initialize allegro library failed!!\n");
		return -1;
	}
	if(install_keyboard())
	{
		printf("error:initialize keybaord failed!!\n");
		return -1;
	}
	roboio_SetRBVer(RB_100);
	
	if(rcservo_SetServos(usedchannel, RCSERVO_DMP_RS0263) == false)
	{
		printf("Set servo fails!%s\n",roboio_GetErrMsg());
		return -1;
	}
	if(rcservo_Initialize(usedchannel) == false)
	{
		printf("RC servo initialize fails!%s\n",roboio_GetErrMsg());
		return -1;
	}
	
	rcservo_SetFPS(500);
	rcservo_EnterPlayMode_NOFB(NORMAL);
	SetVal();
	PRE_STATE = STATE = BALANCE;
	ADJUST = 0.0;
	BODY_YAW = 0.0;
	BODY_PITCH = 0.0;
	BODY_ROLL = 0.0;
	POS_GAIN[0] = 0.0;
	POS_GAIN[1] = 0.0;
	POS_GAIN[2] = 0.0;
	Prepare();
	while(STATE != EXIT)
	{
		GetInput();
		switch(STATE)
		{
			case FORWARD:
			case BACKWARD:
			case RIGHTWARD:
			case LEFTWARD:
			case FLWARD:
			case FRWARD:
			case BLWARD:
			case BRWARD:
			case LCIRCLE:
			case RCIRCLE:
					PlayMotion();
				break;
		
			case IDLE:
					Idle();
				break;	
			case BALANCE:
					Stable();
				break;
			default:
				break;
		}
	}

	rcservo_Close();
	i2c_Close();
	remove_keyboard();
	
	return 0;
}