4. Extrait de Code & Intégration (Contrôle Angulaire Python (pyserial))
import time
import serial
# Liaison Half-Duplex UART 1 Mbps vers servomoteurs STS
ser = serial.Serial('/dev/ttyUSB0', 1000000, timeout=0.05)
def move_servo(servo_id: int, position_step: int, speed: int = 1500):
"""Envoie une consigne angulaire (0-4095) et vitesse."""
pos_h, pos_l = (position_step >> 8) & 0xFF, position_step & 0xFF
spd_h, spd_l = (speed >> 8) & 0xFF, speed & 0xFF
msg = [0xFF, 0xFF, servo_id, 0x07, 0x03, 0x2A, pos_l, pos_h, spd_l, spd_h]
checksum = (~sum(msg[2:])) & 0xFF
msg.append(checksum)
ser.write(bytearray(msg))
if __name__ == '__main__':
print("Test articulation STS3215...")
move_servo(servo_id=1, position_step=2048) # 90°
time.sleep(1.0)
move_servo(servo_id=1, position_step=1024) # 45°
ser.close()