サーボ制御通信プロトコルインターフェース
目的:ServoProtocol クラスのメソッドをすばやく理解できるよう、クラスのメソッド、パラメータ、戻り値、使用例を紹介し、開発に役立てます。
クラス概要
ServoProtocol クラスはサーボ制御通信プロトコルインターフェースで、サーボの回転とプロトコル制御を担当します。
1. 静的メソッド
calculate_checksum(data)
機能 :データフレームのチェックサムを計算します
パラメータ :
data(bytes):チェックサムを計算するデータのバイト列
戻り値 :
byte:チェックサム値(& 0xFF)
使用例 :
python
data = bytes([0x01, 0x02, 0x03])
checksum = ServoProtocol.calculate_checksum(data)
print(f"校验和: 0x{checksum:02X}") # 输出: 校验和: 0xB0
2. 角度を 2 バイトに変換
angle_to_bytes(angle)
機能 :角度値を 2 バイトのプロトコル形式に変換します
パラメータ :
angle(float):角度値(度)
戻り値 :
list:2 バイトのリスト[High Byte, Low Byte]
使用例 :
python
bytes_data = ServoProtocol.angle_to_bytes(90.0)
print(f"90度对应的字节: {bytes_data}") # 输出: [0x03, 0x84]
3. サーボの回転制御
servo_control(servo_num, servo_id, servo_angle)
機能 :複数のサーボを制御する完全なプロトコルデータフレームを生成します
パラメータ :
servo_num(int):制御するサーボの数(1~9)servo_id(list[int]):サーボのピン番号のリストservo_angle(list[float]):対応するサーボ角度のリスト
戻り値 :
bytes:34 バイトの完全なプロトコルデータフレーム
使用例 :
python
protocol = ServoProtocol()
# 控制单个舵机
data = protocol.servo_control(
servo_num=1,
servo_id=[4],
servo_angle=[90.0]
)
print(f"单舵机控制数据: {data.hex(' ').upper()}")
# 控制多个舵机
data = protocol.servo_control(
servo_num=3,
servo_id=[4, 6, 10],
servo_angle=[90.0, 45.0, 180.0]
)
print(f"多舵机控制数据长度: {len(data)}字节")
4. サーボ制御プロトコル生成関数
_generate_protocol(servo_data)
機能 :サーボデータの辞書からプロトコルフレームを生成します(内部使用)
パラメータ :
servo_data(dict):サーボデータの辞書{ピン番号: 角度値}
戻り値 :
bytes:完全なプロトコルデータフレーム
使用例 :
python
# 直接使用字典方式控制舵机
servo_data = {4: 90.0, 6: 45.0, 10: 180.0}
protocol = ServoProtocol()
data = protocol._generate_protocol(servo_data)
ドキュメント