#author("2026-05-03T23:59:32+09:00","default:TESLA2","TESLA2") #author("2026-05-04T00:04:03+09:00","default:TESLA2","TESLA2") [[Rcb4_ex02.py]] ** Rcb4_ex03.py [#g3c4e1bc] - 2026 5/3 以下の Rcb4_ex03.py で Servo モータ1個動作。 -- Rcb4_ex01.pyが動作しなかったのは Rcb4BaseLib.py の setPosはRcb4Mminiでは動かないと推定, Heart To Heart の送受信のlogを見ると, 0xff cmd (servo 動作)ではなく 0x00 cmd (move命令)を使っているので、それを参考に作成 #code(Python){{ #coding: UTF-8 import sys import time sys.path.append('../Rcb4Lib') #Rcb4Libの検索パスを追加 from Rcb4BaseLib import Rcb4BaseLib #Rcb4BaseLib.pyの中のRcb4BaseLib が使えるように設定 import time #timeが使えるように宣言 rcb4 = Rcb4BaseLib() #rcb4をインスタンス(定義) #ポートをオープン #rcb4.open('/dev/ttyAMA0',115200,1.3) #(portName,bundrate,timeout(s)) rcb4.open('/dev/ttyUSB0',115200,1.3) #ACKコマンドを送ってRCB4と接続できるか確認 if rcb4.checkAcknowledge() == True: print ('checkAcknowledge OK') print ('Version -->' ,rcb4.Version) else: print ('checkAcknowledge error') print('get config ', end="") print(f"{rcb4.getConfig():x}") print('get pio ',end="") print(f"{rcb4.getPio():x}") print('get all ad data ',end="") print(f"{rcb4.getAllAdData()}") print('voltage ',end="") print(rcb4.getRcb4Voltage()) sio=0x01 (tf,pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setPos2(1,1,7500) time.sleep(0.5) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setPos2(1,1,4000) time.sleep(0.5) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setPos2(1,1,7500) time.sleep(0.5) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setPos2(1,1,11000) time.sleep(0.5) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setPos2(1,1,7500) time.sleep(0.5) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rcb4.close() }} ---- ** Rcb4BaseLib.py に def setPos2(...):を追加 [#u6e18ded] ** setPos2 [#nfa932d4] - Rcb4BaseLib.py に def setPos2(...):を追加 [#u6e18ded] #code(Python){{ def setPos2 (self, id, sio, position): print(f"setPos2( id={id:02x}, sio={sio:02x},position={position:04x} {position})") data_l=position & 0xff position=position>>8 data_h=position & 0xff buf=[] buf.append(data_l) buf.append(data_h) buf.append(0x00) icsNum=id*2+(sio-1) rtn=self.moveComToDeviceCmdSynchronize(icsNum, 0x06, buf) return rtn }} ---- ** 実行結果 [#r37358d9] (testpip) pi@rpi-202603261445:~/python/RCB4Lib_for_Python_V100B/sample $ python3 Rcb4_ex03.py open comName=/dev/ttyUSB0 bundrate=115200 timOut=1.3 self.com=Serial<id=0xb66ee700, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='E', stopbits=1, timeout=1.3, xonxoff=False, rtscts=False, dsrdtr=False) sendData->[04,fe,06,08,] readData-->[04,fe,06,08,] moveRamToComCmdSynchronize( scrAddr=00, scrDataSize=02) sendData->[0a,00,20,00,00,00,00,00,02,2c,] readData-->[05,00,1b,80,a0,] sendData->[04,fe,06,08,] readData-->[04,fe,06,08,] checkAcknowledge OK Version --> 220 get config moveRamToComCmdSynchronize( scrAddr=00, scrDataSize=02) sendData->[0a,00,20,00,00,00,00,00,02,2c,] readData-->[05,00,13,80,98,] 8013 get pio moveRamToComCmdSynchronize( scrAddr=3a, scrDataSize=02) sendData->[0a,00,20,00,00,00,3a,00,02,66,] readData-->[05,00,00,2c,31,] 0 get all ad data moveRamToComCmdSynchronize( scrAddr=22, scrDataSize=16) sendData->[0a,00,20,00,00,00,22,00,16,62,] readData-->[19,00,32,01,01,00,02,00,02,00,01,00,01,00,22,00,25,00,22,00,22,00,24,00,02,] (True, [306, 1, 2, 2, 1, 1, 34, 37, 34, 34, 36]) voltage moveRamToComCmdSynchronize( scrAddr=22, scrDataSize=02) sendData->[0a,00,20,00,00,00,22,00,02,4e,] readData-->[05,00,32,01,38,] 7.3212890625 getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,50,1d,72,] True pos=7504 setPos2( id=01, sio=01,position=1d4c 7500) moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData) destData=[4c,1d,00,] moveComToDeviceCmd( icsNum=02, offset=06,destData) destData=[4c,1d,00,] sendData->[0a,00,12,06,02,00,4c,1d,00,8d,] readData-->[04,00,06,0a,] getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,50,1d,72,] True pos=7504 setPos2( id=01, sio=01,position=0fa0 4000) moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData) destData=[a0,0f,00,] moveComToDeviceCmd( icsNum=02, offset=06,destData) destData=[a0,0f,00,] sendData->[0a,00,12,06,02,00,a0,0f,00,d3,] readData-->[04,00,06,0a,] getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,c6,0f,da,] True pos=4038 setPos2( id=01, sio=01,position=1d4c 7500) moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData) destData=[4c,1d,00,] moveComToDeviceCmd( icsNum=02, offset=06,destData) destData=[4c,1d,00,] sendData->[0a,00,12,06,02,00,4c,1d,00,8d,] readData-->[04,00,06,0a,] getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,48,1d,6a,] True pos=7496 setPos2( id=01, sio=01,position=2af8 11000) moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData) destData=[f8,2a,00,] moveComToDeviceCmd( icsNum=02, offset=06,destData) destData=[f8,2a,00,] sendData->[0a,00,12,06,02,00,f8,2a,00,46,] readData-->[04,00,06,0a,] getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,eb,2a,1a,] True pos=10987 setPos2( id=01, sio=01,position=1d4c 7500) moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData) destData=[4c,1d,00,] moveComToDeviceCmd( icsNum=02, offset=06,destData) destData=[4c,1d,00,] sendData->[0a,00,12,06,02,00,4c,1d,00,8d,] readData-->[04,00,06,0a,] getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,50,1d,72,] True pos=7504 (testpip) pi@rpi-202603261445:~/python/RCB4Lib_for_Python_V100B/sample $ ---- #counter