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; }
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; }
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; }