Raspberry Pi ZeroDivision错误:浮点除以零adafruit pca9685

2024-05-14 12:01:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在和我的覆盆子斗争。终端打印出一个浮点数除以零,但我没有在代码中除以任何东西。 我已经重置了整个Pi,并重新安装了所有东西。重置后的第一次运行成功,但之后每次运行都会显示以下错误

如果你能帮我,那就太棒了! 谢谢

Traceback (most recent call last):
  File "robot2.py", line 43, in <module>
    kit.servo[servo1].angle = length1
  File "/usr/local/lib/python3.6/site-packages/adafruit_servokit.py", line 150, in __getitem__
    servo = adafruit_motor.servo.Servo(self.kit._pca.channels[servo_channel])
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 103, in __init__
    super().__init__(pwm_out, min_pulse=min_pulse, max_pulse=max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 45, in __init__
    self.set_pulse_width_range(min_pulse, max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 49, in set_pulse_width_range
    self._min_duty = int((min_pulse * self._pwm_out.frequency) / 1000000 * 0xffff)
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 71, in frequency
    return self._pca.frequency
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 145, in frequency
    return self.reference_clock_speed / 4096 / self.prescale_reg
ZeroDivisionError: float division by zero

Traceback (most recent call last):
  File "robot2.py", line 43, in <module>
    kit.servo[servo1].angle = length1
  File "/usr/local/lib/python3.6/site-packages/adafruit_servokit.py", line 150, in __getitem__
    servo = adafruit_motor.servo.Servo(self.kit._pca.channels[servo_channel])
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 103, in __init__
    super().__init__(pwm_out, min_pulse=min_pulse, max_pulse=max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 45, in __init__
    self.set_pulse_width_range(min_pulse, max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 49, in set_pulse_width_range
    self._min_duty = int((min_pulse * self._pwm_out.frequency) / 1000000 * 0xffff)
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 71, in frequency
    return self._pca.frequency
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 145, in frequency
    return self.reference_clock_speed / 4096 / self.prescale_reg
ZeroDivisionError: float division by zero

Traceback (most recent call last):
  File "robot2.py", line 43, in <module>
    kit.servo[servo1].angle = length1
  File "/usr/local/lib/python3.6/site-packages/adafruit_servokit.py", line 150, in __getitem__
    servo = adafruit_motor.servo.Servo(self.kit._pca.channels[servo_channel])
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 103, in __init__
    super().__init__(pwm_out, min_pulse=min_pulse, max_pulse=max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 45, in __init__
    self.set_pulse_width_range(min_pulse, max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 49, in set_pulse_width_range
    self._min_duty = int((min_pulse * self._pwm_out.frequency) / 1000000 * 0xffff)
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 71, in frequency
    return self._pca.frequency
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 145, in frequency
    return self.reference_clock_speed / 4096 / self.prescale_reg
ZeroDivisionError: float division by zero

Traceback (most recent call last):
  File "robot2.py", line 43, in <module>
    kit.servo[servo1].angle = length1
  File "/usr/local/lib/python3.6/site-packages/adafruit_servokit.py", line 150, in __getitem__
    servo = adafruit_motor.servo.Servo(self.kit._pca.channels[servo_channel])
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 103, in __init__
    super().__init__(pwm_out, min_pulse=min_pulse, max_pulse=max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 45, in __init__
    self.set_pulse_width_range(min_pulse, max_pulse)
  File "/usr/local/lib/python3.6/site-packages/adafruit_motor/servo.py", line 49, in set_pulse_width_range
    self._min_duty = int((min_pulse * self._pwm_out.frequency) / 1000000 * 0xffff)
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 71, in frequency
    return self._pca.frequency
  File "/usr/local/lib/python3.6/site-packages/adafruit_pca9685.py", line 145, in frequency
    return self.reference_clock_speed / 4096 / self.prescale_reg
ZeroDivisionError: float division by zero

Tags: inpyselfadafruitlibpackagesusrlocal
1条回答
网友
1楼 · 发布于 2024-05-14 12:01:19

正如其他人所指出的,错误来自库代码,并且没有被try捕获以将其转换为friendly error message。您只能通过检查另一个库的实现来判断,但是self.prescale_reg中有问题的值实际上是通过i2c总线从控制器设备读取的值

Adafruit Forums: RaspberryPi Stepper HAT - example code not working上有一个类似的例子,它被诊断为使用GPIO运行的两个程序之间的冲突

我将仔细检查与控制器设备的物理i2c连接,确保当您使用i2cdetect(例如Adafruit Learn: Adafruit 16 Channel Servo Driver with Raspberry Pi: Configuring Your Pi for I2C)扫描i2c总线时,它会做出响应,并确保您的代码中没有对i2c的GPIO引脚的任何其他冲突使用

相关问题 更多 >

    热门问题