Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2987|回復: 3

Roboard 的 rcservo initialize 如何一起初始化?

[複製鏈接]
發表於 2010-7-7 09:51:34 | 顯示全部樓層 |閱讀模式
目前若是想使用 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 ) ->這樣初始化好像會有問題
還是有其他的初始化的方法??
謝謝
發表於 2010-7-7 17:45:48 | 顯示全部樓層
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)

可以去看看官網上的使用手冊, 對你應該有幫助喔
發表於 2010-7-8 01:46:26 | 顯示全部樓層
RoBoIO.rcservo_Initialize(0 + 1 + 2 + .... + 18)
--->
RoBoIO.rcservo_Initialize(0 + 1 + 2 + 4+8+16+32+....)
他內部是兩byte的值
每個bit 為1就啟動PWM, 為0就gpio

其實在.net裡面就是看它的指令即時說明就有了喔
發表於 2010-7-8 02:17:01 | 顯示全部樓層
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)

但還是建議使用內建的常數值
程式的可閱讀性會好很多
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2022-8-11 22:13 , Processed in 0.187849 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表