舵机吧 关注:578贴子:1,252
  • 7回复贴,共1

请问下总线舵机的协议是不是都是一样的?

只看楼主收藏回复



IP属地:广东1楼2020-02-19 16:22回复
    各个厂家不一样,甚至优必选自己的舵机协议也稍有不同。
    现在优必选的串口协议已经被找的差不多了,can口的协议也有流出,某宝上的can口舵机视频看,已经能驱动了。
    阿尔法和jimu机器人的参考:
    const byte UBT_SERVO_CMD[] = {0xFA, 0xAF,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0xED};
    const byte JIMU_VERSION[] = {0xFC, 0xCF,0x00,0xAA,0x41, 0x16, 0x51, 0x01, 0x00, 0xED};
    网搜索上能找到详细的协议,开源控制板也有人研究出来了。
    这是个简单转180度的例子,可以试试(烧了舵机和板子不要怪我哈,我的是正常的)
    需要1、uno板下载SoftHalfDuplexSerial库用pin8模拟半双工;2、单独电源;3、电源和uno共地。
    详细可搜索alicedodo 的源程序。
    #include <SoftHalfDuplexSerial.h>
    uint8_t checksum(uint8_t* buf, uint8_t sz)
    {
    uint16_t sum = 0;
    for(uint8_t i=0; i<sz; i++)
    sum += buf[i];
    return (uint8_t)(sum&0xff);
    }
    static uint8_t cmd[10] = { 0xFA, 0xAF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xED };
    //servoID=0为广播模式。
    uint8_t readString[64];
    int nByte;
    softHalfDuplexSerial hdSerial(8); // using pin 8 see lib for limitations
    void setup() {
    Serial.begin(115200);
    while (!Serial) {
    }
    hdSerial.begin(115200); // Starting half Duplex communication at 57600 bps
    nByte = 0;
    }
    void loop() {
    nByte = 0;
    //转到0度:
    cmd[4]=0;
    cmd[8] = checksum(&cmd[2], 6);
    hdSerial.flushRx();
    hdSerial.write (cmd, 10);
    delay(1000);
    //转到239度
    cmd[4]=239;
    cmd[8] = checksum(&cmd[2], 6);
    hdSerial.flushRx();
    hdSerial.write (cmd, 10);
    nByte = 0;
    delay(1000);
    //半双工读舵机返回信息
    while(hdSerial.available())
    {
    readString[nByte] = hdSerial.read();
    nByte += 1;
    }
    for (int i=0; i<nByte; i++)
    Serial.print(readString[i]);
    Serial.println();
    }


    IP属地:山东2楼2020-03-05 12:41
    收起回复
      不一样的 每一个厂家都有自己的协议的


      3楼2020-04-16 15:58
      回复
        谁能借到一台 克魯澤 機器人 我就能把 CAN 介面解出來


        4楼2020-06-11 21:20
        收起回复
          这玩意舵机怎么驱动,大佬知道么



          IP属地:福建5楼2021-08-12 10:50
          回复