Robofun 機器人論壇

標題: Roboard 的GPIO [打印本頁]

作者: miaoichi    時間: 2010-5-19 22:56
標題: Roboard 的GPIO
看了原廠文件說,沒使用的pwm可以用來當GPIO
以下是我的程式

rcservo_Initialize(RCSERVO_USECHANNEL2)

rcservo_Outp(2,1);

這樣是不是應該就會輸出high呢??
我執行是沒有反應的。
作者: acen2008    時間: 2010-5-21 08:56
HI~
如果呼叫rcservo_Initialize(RCSERVO_USECHANNEL2)的話
是將channel 2當作是PWM輸出,其它channel為GPIO喔
把rcservo_Outp(2,1)改為rcservo_Outp(1,1)或rcservo_Outp(0,1) <--就是不要2
應該就可以囉
作者: miaoichi    時間: 2010-5-21 09:19
我這樣寫,好像還是不行~~~~


    roboio_SetRBVer(RB_100);


    rcservo_SetServo(0, RCSERVO_SERVO_DEFAULT_NOFB);

    //初始化:把Channel 0和1切換成PWM輸出,其他channel為GPIO
    if(rcservo_Initialize(RCSERVO_USECHANNEL0) == false)
    {
        //初始化失敗則印出錯誤訊息
        printf("%s",roboio_GetErrMsg());
        rcservo_Close();
        return -1;
    }

    //進入PWM Mode
    rcservo_EnterPWMMode();
        

    while(true)
   {
       rcservo_SendPWMPulses(0, 20000L, 800L,100L);
           rcservo_Outp(2,1);
       printf("playing PWM_duty_left .\n");
       while (!rcservo_IsPWMCompleted(0));
       printf("finishing PWM_duty_left .\n");
       Sleep(1000);
       rcservo_SendPWMPulses(0, 20000L, 1500L,100L);
           rcservo_Outp(2,0);
       printf("playing PWM_duty_middle .\n");
       while (!rcservo_IsPWMCompleted(0));
       printf("finishing PWM_duty_middle .\n");
       Sleep(1000);
       rcservo_SendPWMPulses(0, 20000L, 2200L,100L);
           rcservo_Outp(2,1);
       printf("playing PWM_duty_right .\n");
       while (!rcservo_IsPWMCompleted(0));
       printf("finishing PWM_duty_right .\n");
       Sleep(1000);


   }

   //結束程式
   rcservo_Close();
   return 0;
作者: acen2008    時間: 2010-5-21 19:28
HI~
請確定你量測的channel是否正確
依你的code來看 channel 0 會輸出PWM
而channel 2會輸出每3秒LOW一次和每6秒HIGH一次的訊號
作者: miaoichi    時間: 2010-5-21 22:08
回復 4# acen2008


    果然如a大所說的,可以動了,不過gpio的輸出電壓怎麼才3V左右呀???
不是應該是5v嗎??




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2