我试图用树莓皮2连接两个传感器,让他们工作。 它们是DFROBOT模拟光传感器和DFROBOT模拟声音传感器。在
我还使用了一个AD转换器,转换器连接到SCL和SDA引脚上的覆盆子Pi。在
转换器有四个AIN,所以我可以用其中两个,一个连接到光传感器,一个连接到声音传感器。在
有人能帮我学习Python代码吗? 我想让我的Pi接收1秒的Ain1(光传感器)和1秒的Ain2(声音传感器),交替。在
这是我的代码,但似乎不太好用。在
import time
import datetime
from smbus import SMBus
bus = SMBus(1)
def readSoundSensor():
return bus.read_byte(0x48)
def runSoundSensor():
bus.write_byte(0x48,0x00)
last_reading = -1
sound = readSoundSensor()
timestamp= datetime.datetime.utcnow()
record = str(timestamp) + ":" +str(sound)
print "Sound: "+record
def readLightSensor():
return bus.read_byte(0x48)
def runLightSensor():
bus.write_byte(0x48,0x01)
last_reading = -1
light = readLightSensor()
timestamp= datetime.datetime.utcnow()
record = str(timestamp) + ":" +str(light)
print "Light: "+record
while(Ture):
runSoundSensor()
time.sleep(1)
runLightSensor()
time.sleep(1)
我的Pi有一些数据,但我的数据不是我想要的,也不像我只连接一个声/光传感器那样。在
我是全新的树莓派,我不知道地址0x48,等等,我只是从一些指南学习。有人能帮我解决我的错误吗?在
你的
while(Ture):
显然是错的。在您正在为两个传感器向A/D写入相同的命令-
0x48 0x00
这不可能是正确的,除非它在每次读取时对所有输入进行采样?在您确定有正确的SMBUS地址-
0x48
?这个命令
0x00
是什么意思?在为了澄清,SMBUS命令将由
address in hex, command byte(s) in hex
组成。您可能需要阅读SMBUS/I2C寻址:This这篇文章相当不错。在我可以想象,至少您需要发送一个命令来选择
Ain
输入中的一个,然后再发送一个命令对其进行采样。0x00
看起来更像是重置。在你看过A/D的文件了吗?在
相关问题 更多 >
编程相关推荐