Adafruit 的 "adafruit_servokit" 库 returns 伺服设置角度错误
Adafruit's "adafruit_servokit" library returns error on setting angle of servo
我想按给定角度控制舵机。
我正在使用 运行 Raspian 的 RaspberryPi 4 Model B。
伺服系统连接到 Adafruit PCA9685 16 通道伺服驱动器。
伺服驱动器通过i2c连接到RaspberryPi。
Python 版本 3.7.
我使用了以下教程:https://learn.adafruit.com/16-channel-pwm-servo-driver/python-circuitpython
我可以通过设置正确控制 LED(就像上面的教程一样)。
LED 连接到通道 8 上的伺服驱动器,而伺服驱动器连接到通道 2。
所以这是我的代码(还包括控制 LED):
import board
import busio
import adafruit_pca9685
from adafruit_servokit import ServoKit
i2c = busio.I2C(board.SCL, board.SDA)
pca = adafruit_pca9685.PCA9685(i2c)
pca.frequency = 60
pca.channels[8].duty_cycle = 0x7FFF
kit = ServoKit(channels=16)
kit.servo[2].angle = 180
这是我在 return 中得到的错误代码:
Traceback (most recent call last):
File "/home/pi/rover/Main.py", line 12, in <module>
kit.servo[2].angle = 180
File "/home/pi/.local/lib/python3.7/site-packages/adafruit_servokit.py", line 147, in __getitem__
servo = adafruit_motor.servo.Servo(self.kit._pca.channels[servo_channel])
File "/usr/local/lib/python3.7/dist-packages/adafruit_motor/servo.py", line 89, in __init__
super().__init__(pwm_out, min_pulse=min_pulse, max_pulse=max_pulse)
File "/usr/local/lib/python3.7/dist-packages/adafruit_motor/servo.py", line 29, in __init__
self.set_pulse_width_range(min_pulse, max_pulse)
File "/usr/local/lib/python3.7/dist-packages/adafruit_motor/servo.py", line 33, in set_pulse_width_range
self._min_duty = int((min_pulse * self._pwm_out.frequency) / 1000000 * 0xFFFF)
File "/home/pi/.local/lib/python3.7/site-packages/adafruit_pca9685.py", line 56, in frequency
return self._pca.frequency
File "/home/pi/.local/lib/python3.7/site-packages/adafruit_pca9685.py", line 134, in frequency
return self.reference_clock_speed / 4096 / self.prescale_reg
ZeroDivisionError: float division by zero
我自己解决了这个问题。这是我所做的:
我对电路python和常规python之间的区别感到困惑。
据我了解,circuitpython 是一种完整的编程语言及其环境。如果这甚至可以安装在 RaspberryPi 上,我不确定。我查了circuitpython官网好像不支持,查download's page。
如果你安装了电路python,你可以参考这个Github页面:https://github.com/adafruit/Adafruit_CircuitPython_PCA9685
无论如何,我正在寻找的是 Adafruit 的“常规”库 python。这可以从这里提取:https://github.com/adafruit/Adafruit_Python_PCA9685
查看 readme.md 了解设置说明。
有了这个,它对我有用。控制舵机现在相当容易。
我想按给定角度控制舵机。
我正在使用 运行 Raspian 的 RaspberryPi 4 Model B。 伺服系统连接到 Adafruit PCA9685 16 通道伺服驱动器。 伺服驱动器通过i2c连接到RaspberryPi。
Python 版本 3.7.
我使用了以下教程:https://learn.adafruit.com/16-channel-pwm-servo-driver/python-circuitpython
我可以通过设置正确控制 LED(就像上面的教程一样)。
LED 连接到通道 8 上的伺服驱动器,而伺服驱动器连接到通道 2。
所以这是我的代码(还包括控制 LED):
import board
import busio
import adafruit_pca9685
from adafruit_servokit import ServoKit
i2c = busio.I2C(board.SCL, board.SDA)
pca = adafruit_pca9685.PCA9685(i2c)
pca.frequency = 60
pca.channels[8].duty_cycle = 0x7FFF
kit = ServoKit(channels=16)
kit.servo[2].angle = 180
这是我在 return 中得到的错误代码:
Traceback (most recent call last):
File "/home/pi/rover/Main.py", line 12, in <module>
kit.servo[2].angle = 180
File "/home/pi/.local/lib/python3.7/site-packages/adafruit_servokit.py", line 147, in __getitem__
servo = adafruit_motor.servo.Servo(self.kit._pca.channels[servo_channel])
File "/usr/local/lib/python3.7/dist-packages/adafruit_motor/servo.py", line 89, in __init__
super().__init__(pwm_out, min_pulse=min_pulse, max_pulse=max_pulse)
File "/usr/local/lib/python3.7/dist-packages/adafruit_motor/servo.py", line 29, in __init__
self.set_pulse_width_range(min_pulse, max_pulse)
File "/usr/local/lib/python3.7/dist-packages/adafruit_motor/servo.py", line 33, in set_pulse_width_range
self._min_duty = int((min_pulse * self._pwm_out.frequency) / 1000000 * 0xFFFF)
File "/home/pi/.local/lib/python3.7/site-packages/adafruit_pca9685.py", line 56, in frequency
return self._pca.frequency
File "/home/pi/.local/lib/python3.7/site-packages/adafruit_pca9685.py", line 134, in frequency
return self.reference_clock_speed / 4096 / self.prescale_reg
ZeroDivisionError: float division by zero
我自己解决了这个问题。这是我所做的:
我对电路python和常规python之间的区别感到困惑。 据我了解,circuitpython 是一种完整的编程语言及其环境。如果这甚至可以安装在 RaspberryPi 上,我不确定。我查了circuitpython官网好像不支持,查download's page。 如果你安装了电路python,你可以参考这个Github页面:https://github.com/adafruit/Adafruit_CircuitPython_PCA9685
无论如何,我正在寻找的是 Adafruit 的“常规”库 python。这可以从这里提取:https://github.com/adafruit/Adafruit_Python_PCA9685 查看 readme.md 了解设置说明。 有了这个,它对我有用。控制舵机现在相当容易。