扫描总线舵机

SServo.scan()

扫描连接上的总线舵机

返回值

包含所有扫描到总线舵机id的数组

使用示例:打印出扫描到的总线舵机id

  1. from pi_driver import SServo
  2. servo= SServo()
  3. print(servo.scan())

修改总线舵机id

SServo.change_id(old,new)

给总线舵机指定新的id

参数说明

old:总线舵机当前的id,总线舵机初始id默认为1
new:想要修改的总线舵机新id,可选范围1——253

使用示例:把3号总线舵机修改为2号

  1. from pi_driver import SServo,Servo
  2. servo= SServo()
  3. servo.change_id(3,2)

设置单个总线舵机角度

SServo.set_position(id,position,ms=0)

控制对应总线舵机转动到指定位置

参数说明

id:总线舵机id
position:总线舵机转动的目标位置(0——1023,对应0——300度)
ms:可选设置多少毫秒转动到指定位置,默认0以最快时间转动到指定位置

使用示例:让3号总线舵机在500毫秒内转动到中间位置

  1. from pi_driver import SServo
  2. servo= SServo()
  3. servo.set_position(3,511,ms=500)

批量设置总线舵机角度

SServo.set_positions(servos)

控制多个总线舵机转动到指定位置

参数说明

servos:[Servo(id, position, ms=0)],包含每个舵机id、位置和时间的Servo对象数组

使用示例:让1号和3号总线舵机以最快时间转动到中间位置

  1. from pi_driver import SServo,Servo
  2. servo= SServo()
  3. servo.set_positions([Servo(1,511),Servo(3,511)])

示例代码 Python/舵机归零.py

扫描已连接的总线舵机,并把它们的角度回中(归零)

  1. #!coding:utf-8
  2. from pi_driver import SServo
  3. import time
  4. import os
  5. if __name__ == '__main__':
  6. import serial.tools.list_ports
  7. serial_ports = [i[0] for i in serial.tools.list_ports.comports()]
  8. print(serial_ports)
  9. # servo = SServo('/dev/ttyAMA1')
  10. servo = SServo()
  11. while True:
  12. os.system('clear')
  13. ids = servo.scan_print(25)
  14. for i in ids:
  15. servo.remove_limit(i)
  16. servo.set_position(i,1023/2)
  17. time.sleep(1)

设置舵机零点偏移

SServo.set_offset(id,offset)

设置舵机的零点偏移

参数说明

id:总线舵机id
offset:总线舵机转动的目标位置(0——1023,对应0——300度)

使用示例:让3号总线舵机在500毫秒内转动到中间位置

  1. from pi_driver import SServo
  2. servo= SServo()
  3. servo.set_position(3,511,ms=500)

示例代码 Python/清除校准.py

扫描已连接的总线舵机,清除零点校准

  1. #!coding:utf-8
  2. from pi_driver import SServo
  3. import time
  4. import os
  5. if __name__ == '__main__':
  6. import serial.tools.list_ports
  7. serial_ports = [i[0] for i in serial.tools.list_ports.comports()]
  8. print(serial_ports)
  9. # servo = SServo('/dev/ttyAMA1')
  10. servo = SServo()
  11. while True:
  12. os.system('clear')
  13. ids = servo.scan_print(25)
  14. for i in ids:
  15. servo.set_offset(i,0)
  16. servo.set_position(i,1023/2)
  17. time.sleep(1)