|
本帖最後由 miaoichi 於 2012-1-10 21:59 編輯
感謝m大幫忙,我把程式重貼了,請幫我再看一下。謝謝
- int main(int argc, char **argv)
- {
- roboio_SetRBVer(RB_100);// first set the correct RoBoard version
- if(InitServo())
- return -1;
- if(argc == 4)
- {
- BodyServoDrive((atoi(argv[1]) - 1),atol(argv[2]),atol(argv[3]));
- return 0;
- }
- else if(argc == 3)
- {
- rcservo_OutPin((atoi(argv[1]) -1), atoi(argv[2]));
- }
- else
- {
- printf("input example-- %s channel period duty \n",argv[0]);
- printf("channel : from 1 to 19 \n");
- printf("period 10ms => 10000\n");
- printf("duty 1500us => 1500\n");
- }
- return -1;
- }
- int InitServo(void)
- {
- int i;
- for(i=RCSERVO_PINS1;i<=RCSERVO_PINS24;i++)
- if(i<5 || i>10)
- rcservo_SetServo(i, RCSERVO_SERVO_DEFAULT_NOFB); // select the servo model as non-feedback servo
- if (rcservo_Init(RCSERVO_USEPINS1TO24) == false) // set PWM/GPIO as Servo mode
- {
- printf("ERROR: fail to init RC Servo lib (%s)!\n", roboio_GetErrMsg());
- return -1;
- }
- return 0;
- }
- void BodyServoDrive(int channel, long period, long duty)
- {
- rcservo_EnterPWMMode(); // make all servo-mode pins go into PWM mode
- printf("Send PWM pulses of period %ldus duty %ldus on pin %d...\n",period,duty,channel+1);
- rcservo_SendCPWM(channel, period, duty);
- printf("Press ENTER to stop.\n"); getchar();
- rcservo_StopPWM(channel);
- rcservo_Close(); // close RC Servo lib
- }
複製代碼 |
|