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