圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 6014|回復: 2

結合伺服機控制板PS2搖桿及馬達模組的範例

[複製鏈接]
magiccar 發表於 2012-6-17 23:56 | 顯示全部樓層 |閱讀模式
這個範例可利用伺服馬達來控制前輪轉向的車子
SC8_PS2_MR2x30A範例.inb (2.85 KB, 下載次數: 10)

Peripheral myS As ServoRunner8A @ 0                '設定模組編號為0,注意!使用Servo Commander8
                                                                        '上的伺服機相關指令,一定要設定編號為0
Peripheral MRC As MR2x30a @ 1                         '設定馬達模組編號為1
Peripheral Ps As GamePadPs @ 31                        '設定PS2遙控器模組編號為31

Dim b4Way As Word
Dim wStatus,wKeyStatus As Word
Dim POSx,POSy,P_x,P_y As Integer
Dim Dir,Power As Integer

Sub MAIN()
        Ps2Set()
        myS.SetPos(0,1500)                                '設定0號伺服馬達到中央點
        myS.SetPos(1,1500)                                '設定1號伺服馬達到中央點
        myS.RunAllServo()                                '命令伺服馬達開始動作
    wKeyStatus = 0
        Do
                Dir = POSx * 2                                '將左搖桿(轉向)動作值放大2倍(可自行調整倍率)
                myS.SetPos(0,1500 + Dir)                '設定0號伺服馬達轉向角度
                myS.SetPos(1,1500 + Dir)            '設定1號伺服馬達轉向角度
                myS.RunAllServo()                        '命令伺服馬達開始動作
               
                Power = P_y * 6                        '將右搖桿(前後)動作值放大6倍(可自行調整倍率)               
                If Power > 10 Then
                        MRC.ForwardA(Power)
                Elseif Power < -10 Then
                        MRC.BackwardA(-Power)
                Else
                        MRC.BrakeA()
                End If
        Loop
End Sub
'===================PS2搖桿副程式區====================
Sub Ps2Set()
        Ps.SetLStickDeadZone(1,5)        'SetDeadZone
        Ps.SetRStickDeadZone(1,5)        'SetDeadZone
        Ps.SetAnalog(1)
        Ps.SetStickRefreshRate(10)
        ps.EnableLStickEvent()
        ps.EnableRStickEvent()
        Ps.EnableKeyPressedEvent()        'Enable Pressed
        Ps.EnableKeyReleasedEvent()        'Enable Pressed
End Sub

Event Ps.LStickEvent()
        Ps.GetLXYPos(POSx,POSy)
End Event

Event Ps.RStickEvent()
        Ps.GetRXYPos(P_x,P_y)
End Event

Event Ps.KeyPressedEvent()       
        wStatus = Ps.GetKeyStatus()       
        wKeyStatus = wStatus +b4Way*4096
End Event       

Event Ps.KeyReleasedEvent()
        wStatus = Ps.GetKeyStatus()
        wKeyStatus = wStatus +b4Way*4096       
End Event

zx324719 發表於 2015-5-3 21:38 | 顯示全部樓層
周老師你好我是用了一下你的範例可是一直出現問題ㄟ
未命名.png
 樓主| magiccar 發表於 2015-5-3 23:59 | 顯示全部樓層
zx324719 發表於 2015-5-3 21:38
周老師你好我是用了一下你的範例可是一直出現問題ㄟ


             Dir = POSx * 2                    '將左搖桿(轉向)動作值放大2倍(可自行調整倍率)
             myS.SetPos(0,1500 + Dir)    '設定0號伺服馬達轉向角度
             myS.SetPos(1,1500 + Dir)    '設定1號伺服馬達轉向角度

改成

             Dir = 1500 + POSx * 2         '將左搖桿(轉向)動作值放大2倍(可自行調整倍率)
             myS.SetPos(0,Dir)                '設定0號伺服馬達轉向角度
             myS.SetPos(1,Dir)                '設定1號伺服馬達轉向角度

就可以了!
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

QQ|Archiver|手機版|小黑屋|圓創力科技有限公司 IOP Robotic Technology Co.,Ltd Tel: 07-3924582 Fax: 07-3924001

GMT+8, 2024-11-23 19:09 , Processed in 0.032453 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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