KRS ICSサーボモータ用ライブラリ

初期化 KRS name(tx,rx);

位置指定 void SetPosition(id, position); [position : 0 3500 ~ 11500]

速度設定 void SetSpeed(id, speed); [speed : 0 ~ 127]

ストレッチ設定 void SetStretch(id, stretch); [stretch : 0 ~ 127]

電流制限設定 void SetCurrent(id, rotate, value : 0 ~ 127); [rotate : KRS::F KRS::R KRS::COM, current : 0 ~ 64]

ID書き込み void WriteAddress(id);

id : 0x00 ~ 0x1F

Committer:
koki_konishi
Date:
Sat Jul 02 03:12:15 2022 +0000
Revision:
0:7bf595a76895
Child:
1:50d0eb774b0d
kondo-servo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
koki_konishi 0:7bf595a76895 1 #include "KRS.h"
koki_konishi 0:7bf595a76895 2 #include "mbed.h"
koki_konishi 0:7bf595a76895 3
koki_konishi 0:7bf595a76895 4 KRS::KRS(PinName tx,PinName rx) : _serial(tx,rx){
koki_konishi 0:7bf595a76895 5 _serial.baud(115200);
koki_konishi 0:7bf595a76895 6 _serial.format(8,Serial::Even,1);
koki_konishi 0:7bf595a76895 7 }
koki_konishi 0:7bf595a76895 8
koki_konishi 0:7bf595a76895 9 void KRS::SetPosition(uint8_t address, uint16_t value){
koki_konishi 0:7bf595a76895 10 ins = 0b10000000;
koki_konishi 0:7bf595a76895 11 if(address <= 0x1F){
koki_konishi 0:7bf595a76895 12 ins |= address;
koki_konishi 0:7bf595a76895 13 }else{
koki_konishi 0:7bf595a76895 14 ins |= 0x1F;
koki_konishi 0:7bf595a76895 15 }
koki_konishi 0:7bf595a76895 16
koki_konishi 0:7bf595a76895 17 if(value == 0){
koki_konishi 0:7bf595a76895 18 value = 0;
koki_konishi 0:7bf595a76895 19 }else if(value < 3500){
koki_konishi 0:7bf595a76895 20 value = 3500;
koki_konishi 0:7bf595a76895 21 }else if(value > 11500){
koki_konishi 0:7bf595a76895 22 value = 11500;
koki_konishi 0:7bf595a76895 23 }
koki_konishi 0:7bf595a76895 24 byteH = value >> 7;
koki_konishi 0:7bf595a76895 25 byteL = value;
koki_konishi 0:7bf595a76895 26 byteL &= (0 << 8);
koki_konishi 0:7bf595a76895 27
koki_konishi 0:7bf595a76895 28 _serial.putc(ins);
koki_konishi 0:7bf595a76895 29 _serial.putc(byteH);
koki_konishi 0:7bf595a76895 30 _serial.putc(byteL);
koki_konishi 0:7bf595a76895 31 }