树莓派 - 访问0x40时出错:检查I2C地址
我在我的树莓派上运行这个Python舵机脚本。这个代码是我从这里找到的:
Python舵机脚本
#!/usr/bin/python
from Adafruit_PWM_Servo_Driver import PWM
import time
# ===========================================================================
# Example Code
# ===========================================================================
# Initialise the PWM device using the default address
# bmp = PWM(0x40, debug=True)
pwm = PWM(0x40, debug=True)
servoMin = 150 # Min pulse length out of 4096
servoMax = 600 # Max pulse length out of 4096
def setServoPulse(channel, pulse):
pulseLength = 1000000 # 1,000,000 us per second
pulseLength /= 60 # 60 Hz
print "%d us per period" % pulseLength
pulseLength /= 4096 # 12 bits of resolution
print "%d us per bit" % pulseLength
pulse *= 1000
pulse /= pulseLength
pwm.setPWM(channel, 0, pulse)
pwm.setPWMFreq(60) # Set frequency to 60 Hz
while (True):
# Change speed of continuous servo on channel O
pwm.setPWM(0, 0, servoMin)
time.sleep(1)
pwm.setPWM(0, 0, servoMax)
time.sleep(1)
我试过这个解决方案,但没有帮助。
https://learn.adafruit.com/downloads/pdf/adafruit-16-channel-servo-driver-with-raspberry-pi.pdf
我接下来可以尝试什么呢?
1 个回答
0
首先,你不需要每次都以管理员身份登录:只在需要的时候加上sudo,然后输入密码就可以了。
其次,你的i2c总线可能没有正确配置,或者接线有问题。命令i2cdetect没有检测到任何连接的设备。你已经安装了smbus和i2ctools,但你有没有把i2c-bcm2708从黑名单中移除呢?
你需要输入:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
并在i2c-dev和i2c-bcm2708那一行前面加一个#。
从:
blacklist i2c-dev
blacklist i2c-bcm2708
变成:
#blacklist i2c-dev
#blacklist i2c-bcm2708
然后你需要在启动时添加i2c的模块。
sudo nano /etc/modules
并在文件的末尾添加这两行:
i2c-bcm2708
i2c-dev
现在你可以用以下命令手动加载这些模块:
sudo modprobe i2c-bcm2708
sudo modprobe i2c-dev
然后再输入:
sudo i2cdetect -y 0 #if you have a rev1 board
sudo i2cdetect -y 1 #if you have a rev2 board
现在,如果你在图表中看到除了点以外的东西(就像之前那样),检查一下你的接线。如果你看到了一些东西,那就是伺服驱动器的地址。