Robofun 機器人論壇

標題: Roboard 的 rcservo initialize 如何一起初始化? [打印本頁]

作者: miaoichi    時間: 2010-7-7 09:51
標題: Roboard 的 rcservo initialize 如何一起初始化?
目前若是想使用 pwm0 ~ 18的話

        RoBoIO.roboio_SetRBVer(RoBoIO.RB_100)
        RoBoIO.rcservo_SetServo(0, RoBoIO.RCSERVO_SERVO_DEFAULT_NOFB)

        If RoBoIO.rcservo_Initialize(0 + 1 + 2 + .... + 18) = False Then
            Me.Label_status.Text = RoBoIO.roboio_GetErrMsg()
        Else
            Me.Label_status.Text = "rcservo_Initialize succeesed!!!"
        End If
        RoBoIO.rcservo_EnterPWMMode()


RoBoIO.rcservo_Initialize(0 + 1 + 2 + 3 + .... + 18 ) ->這樣初始化好像會有問題
還是有其他的初始化的方法??
謝謝
作者: acen2008    時間: 2010-7-7 17:45
Hi

如果想要用多channel PWM 的話

RoBoIO.rcservo_SetServo(0, RoBoIO.RCSERVO_SERVO_DEFAULT_NOFB)
可能要改成
    for(i=0; i<19; i++)
        RoBoIO.rcservo_SetServo(i, RoBoIO.RCSERVO_SERVO_DEFAULT_NOFB)

而RoBoIO.rcservo_Initialize(0 + 1 + 2 + .... + 18)的話, 要改成

    RoBoIO.rcservo_Initialize(RoBoIO.RCSERVO_USECHANNEL0 +
                                         RoBoIO.RCSERVO_USECHANNEL1 + ...
                                         RoBoIO.RCSERVO_USECHANNEL18);

rcservo_SetServo 是單channel函數, rcservo_Initialize 則是多channel函數
    - 只要是多channel函數, 都有已經定義好的常數, 並且彼此間可做累加
      (例如 : RCSERVO_USECHANNEL, AD7918_USECHANNEL)
    - 單channel函數, 輸入就只能是數值 (0, 1, 2, 3 .....  代表第 n channel)

可以去看看官網上的使用手冊, 對你應該有幫助喔
作者: mzw2008    時間: 2010-7-8 01:46
RoBoIO.rcservo_Initialize(0 + 1 + 2 + .... + 18)
--->
RoBoIO.rcservo_Initialize(0 + 1 + 2 + 4+8+16+32+....)
他內部是兩byte的值
每個bit 為1就啟動PWM, 為0就gpio

其實在.net裡面就是看它的指令即時說明就有了喔
作者: mzw2008    時間: 2010-7-8 02:17
RoBoIO.rcservo_Initialize(0 + 1 + 2 + 4+8+16+32+....)
也可改迴圈
dim temp as integer=0
for a=0 to 17
temp +=2^a 或是 temp +=math.pow(2,a)
next
RoBoIO.rcservo_Initialize(a)

但還是建議使用內建的常數值
程式的可閱讀性會好很多




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